我有一个表单的 DataFrameeqt_code ACA_FP AC_FP AI_FPBDATE 2015-01-01 NaN NaN NaN2015-01-02 NaN NaN NaN2015-01-05 1 NaN NaN2015-01-06 NaN NaN NaN2015-01-07 NaN NaN NaN2015-01-08 NaN 0.2 NaN2015-01-09 NaN NaN NaN2015-01-12 5 NaN NaN2015-01-13 NaN NaN NaN2015-01-14 NaN NaN NaN2015-01-15 NaN NaN NaN而且我希望每个月都获得每列的最后一个非 NaN 值(如果没有有效值,则为 NaN )。因此导致类似eqt_code ACA_FP AC_FP AI_FPBDATE 2015-01-31 5 0.2 NaN2015-02-28 10 1 32015-03-31 NaN NaN 32015-04-30 10 1 3我有两个想法来执行此操作:做一个ffill到月底的限制。类似的东西df.ffill(<add good thing here>).resample('M').last()。last_valid_index与 一起使用resample('M')。
2 回答
森林海
TA贡献2011条经验 获得超2个赞
使用 resample
df.resample('M').last()
Out[82]:
ACA_FP AC_FP AI_FP
eqt_code
2015-01-31 1.0 0.2 NaN
慕田峪7331174
TA贡献1828条经验 获得超13个赞
使用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
...
添加回答
举报
0/150
提交
取消