定义跳过 nan 值的 pandas 数据帧的开始

Posted

技术标签:

【中文标题】定义跳过 nan 值的 pandas 数据帧的开始【英文标题】:define start of a pandas dataframe skipping nan values 【发布时间】:2020-05-29 10:54:22 【问题描述】:

我正在阅读一个我想在 nan 值之后开始几行的 excel:

NaN
NaN
NaN
NaN
Code

我是这样做的:

for data in range(len(df)):
   try:
      if 'Code' in df.iloc[data,0]:
      df = df.iloc[data:,:]
   except:
      passs

但是这样我会错过其他解析错误

我正在尝试这样做:

if pd.isna(df.iloc[data,0]):
    pass
if 'Code' in str(df.iloc[data,0]):
    df = df.iloc[data:,:]

但我明白了:

argument of type 'float' is not iterable in the 'Code' line

任何帮助更有效地解决这个问题

【问题讨论】:

这是你想要的吗? df[df['col'].notnull()] 每个电子表格的Code 值是否位于同一行中?然后你可以只使用skiprows 参数。 你能澄清你的问题吗?你真的应该阅读 Pandas 文档。 【参考方案1】:

我没有太多使用pandas 的经验,但是当我查看reading_excel 的文档时,我得到了以下信息,这可能会帮助您跳过NaN 值。

您可以在阅读excel时传递以下参数

    na_values keep_default_na na_filter

您可以获取更多信息here

【讨论】:

【参考方案2】:

Skiprows 将有助于在从 excel 读取时跳过一些行并读取数据..

df_can = pd.read_excel('https://....Canada.xlsx',
                   sheet_name='Canada by Citizenship',
                   skiprows=range(20),
                   skipfooter=2)

请查看此要点,了解如何在跳过某些行后将 excel 文件读入 pandas 数据帧。

https://gist.github.com/dhamayanthim80/b0d861d7cffe48094f89fd8e05609e17

对不起,如果我的回答与您的问题无关。

reading excel to a python data frame starting from row 5 and including headers

请检查这是否有帮助。

【讨论】:

以上是关于定义跳过 nan 值的 pandas 数据帧的开始的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Pandas DataFrame中的最大值/最小值

过滤值小于 0 的 pandas 数据帧的行

在 pandas 数据框中检索 NaN 值的索引

查找具有 NaN 值的 DataFrame 列表的索引 - Pandas

Pandas:根据条件为多索引数据帧的子集设置值的正确方法

Python_Executing 来自 Pandas 数据帧的所有值的特定行