Python 获取熊猫中每个月的最后一个非NaN值
我有一个数据框的形式Python 获取熊猫中每个月的最后一个非NaN值,python,pandas,dataframe,nan,Python,Pandas,Dataframe,Nan,我有一个数据框的形式 eqt_code ACA_FP AC_FP AI_FP BDATE 2015-01-01 NaN NaN NaN 2015-01-02 NaN NaN NaN 2015-01-05 1 NaN NaN 2015-01-06 NaN NaN NaN 2015-01-07 NaN NaN NaN 2015-01-
eqt_code ACA_FP AC_FP AI_FP
BDATE
2015-01-01 NaN NaN NaN
2015-01-02 NaN NaN NaN
2015-01-05 1 NaN NaN
2015-01-06 NaN NaN NaN
2015-01-07 NaN NaN NaN
2015-01-08 NaN 0.2 NaN
2015-01-09 NaN NaN NaN
2015-01-12 5 NaN NaN
2015-01-13 NaN NaN NaN
2015-01-14 NaN NaN NaN
2015-01-15 NaN NaN NaN
我希望每个月都能得到每列的最后一个非NaN值(如果没有有效值,则为NaN)。因此导致类似于
eqt_code ACA_FP AC_FP AI_FP
BDATE
2015-01-31 5 0.2 NaN
2015-02-28 10 1 3
2015-03-31 NaN NaN 3
2015-04-30 10 1 3
我有两个想法来实现这一点:
- 做一个
,限制到月底。类似于ffill
df.ffill().resample('M').last()
- 使用
和last\u valid\u index
resample('M')
- 使用
groupby
和last
:
# Do this if the index isn't a DatetimeIndex.
# df.index = pd.to_datetime(df.index)
df.groupby(df.index + pd.offsets.MonthEnd(0)).last()
ACA_FP AC_FP AI_FP
BDATE
2015-01-31 5.0 0.2 NaN
...
使用
df.dropna(how='all')
将删除所有值均为NaN
的每一行,并将为您提供大部分方法 使用重采样
df.resample('M').last()
Out[82]:
ACA_FP AC_FP AI_FP
eqt_code
2015-01-31 1.0 0.2 NaN
我想你需要
最后一个!工作得很有魅力。谢谢!