删除数据框中的列,其中 2 个日期之间的值为 NaN
Posted
技术标签:
【中文标题】删除数据框中的列,其中 2 个日期之间的值为 NaN【英文标题】:Drop columns in a dataframe where values between 2 dates are NaN 【发布时间】:2021-12-21 17:52:56 【问题描述】:我无法弄清楚这一点。我搜索了很多网站并关注了很多视频,但我只是被卡住了。我相信解决方案很简单......感谢所有帮助!
我有一个日期框,输出如下(日期为索引):
Date col1 col2 col3 col4 col5
1959-01-01 NaN NaN 1.35 4.21 NaN
1959-02-01 NaN NaN 2.14 6.30 5.75
1959-03-01 1.97 NaN NaN 7.35 6.23
1959-04-01 2.19 3.14 NaN NaN 7.15
1959-05-01 3.16 2.74 NaN NaN 8.42
1959-06-01 2.91 3.63 NaN NaN 8.36
1959-07-01 2.72 4.98 NaN NaN NaN
我想删除在日期 1959-03-01 和 1959-06-01 之间具有 NaN 的列。我希望输出看起来像这样:
Date col1 col5
1959-01-01 NaN NaN
1959-02-01 NaN 5.75
1959-03-01 1.97 6.23
1959-04-01 2.19 7.15
1959-05-01 3.16 8.42
1959-06-01 2.91 8.36
1959-07-01 2.72 NaN
感谢您的帮助!
【问题讨论】:
【参考方案1】:首先,您需要找到日期的索引:
a = np.where(df['Date'] == '1959-03-01')[0]
b = np.where(df['Date'] == '1959-06-01')[0]
其次,您需要检查每个日期之间的列:
to_drop = []
for column in df.columns:
check = df[column].between(a, b, inclusive='both')
if any(np.isnan(check)): to_drop.append(column)
三、需要删除符合条件的列:
df = df.drop(to_drop, axis=1)
【讨论】:
谢谢。工作出色。非常感谢。以上是关于删除数据框中的列,其中 2 个日期之间的值为 NaN的主要内容,如果未能解决你的问题,请参考以下文章
Spark基于其他数据框中的列对数据框中的列进行重复数据删除