熊猫将系列限制为不包含空白单元格的最后一行

时间:2018-11-07 16:36:54

标签: python pandas

我有一个excel电子表格,可以每天查看当年的特定业务指标。在我的csv中,我有一个date列,其中包含从今年初到最后一年的日期,以及用于分析的指标的其他列。虽然date列具有整个年份的值,但metrics列在当前年份中当前日期之后的每一天都有空白单元格。对于我的分析,我只想分析设置为指标列中不为空的最后一个值的数据。我以为我可以通过用np.nan替换“空白”,然后仅用数字过滤我的系列来实现此目的,但是我认为这不是正确的方法,因为我收到一个错误。有更好的方法吗?

当前尝试出现错误:

df_raw = df_raw.replace('', np.nan, inplace=True)
print(df_raw.tail())
AttributeError: 'NoneType' object has no attribute 'tail'

这是我的数据:

    date    |    cost    |    impression    |   ...
2 2018-01-01  $209492.29     14,9232
3 2018-01-02  $3248492.29     482,293
....
365 2018-12-30       
366 2018-12-31

代码:

df_raw = pd.DataFrame(sheet.get_all_values(),columns=sheet.get_all_values()[1])

# exclude header(s) from row count NEEDS TO BE UPDATED BASED ON DATA SET
df_raw = df_raw.drop(df_raw.index[[0,1]])

# convert date column to datetime format
df_raw['date'] = pd.to_datetime(df_raw['date'])

# convert blank rows with nan
df_raw = df_raw.replace('', np.nan, inplace=True)
print(df_raw.tail())

2 个答案:

答案 0 :(得分:1)

inplace应该进行替换而无需额外的df_raw =。请注意,文档说“如果为True,则返回呼叫者”。对于这个参数。参见:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html

我怀疑这是问题所在。

答案 1 :(得分:1)

这取决于数据...

如果您已经将所有空格都转换为np.nan,并且知道指标字段在当前日期之前始终会有一个值,那么您可以运行...

df = df.dropna() #Drop all rows containing nan  

#or you could run

df.dropna(thresh=2)   #Drop row if it does not have at least two values that are **not** NaN