我有一个大的数据帧,其中有不同的开始日期的测量。我现在想把它压缩成一个只包含超过某个日期的测量值的数据帧。在
我想把这个转过来:
A B C D E
1950-11-01 3 NaN NaN NaN NaN
1950-12-01 2 NaN NaN NaN 5
1951-01-01 NaN NaN NaN NaN 4
1951-02-01 3 4 NaN NaN NaN
1951-03-01 2 3 4 NaN 5
在这方面:
^{pr2}$也就是说,我希望只删除1951年之前完全填充了NaN的列。如果数据中存在单一的nan(来自测量失败),则应保留。在
我可以用df['1940':'1950']
找到有问题的列,只选择有问题的时间,然后执行df.dropna(axis = 1, how = 'all')
,但是这样,我就丢失了1951年以后的部分,这对我来说很有趣。我可以使用它的输出,提取有问题的列的标签,然后从原始数据集中选取那些标签,但是它是一个6级多索引,整个df有2000个列,所以这肯定不是最佳的方法。在
基本上,我想做一些
longtermdata = alldata.dropna(axis = 1, how = 'all that are NaN before 1951')
我怎样才能做到最好?在
找到要保留的列
^{pr2}$最初我有
但是
df.columns
对于.loc
确实不是必需的。感谢@unutbu结果
df.loc[begin_date:, cols]
给出df.loc[:,cols]
给出开始日期
df.loc[:begin_date]
包含{df[df.index < begin_date]
相关问题 更多 >
编程相关推荐