删除数据框中的列,其中 2 个日期之间的值为 NaN
Drop columns in a dataframe where values between 2 dates are NaN
这个我想不通。我在谷歌上搜索了很多网站并关注了很多视频,但我只是被困住了。我相信解决方案很简单....感谢所有帮助!
我有一个日期框,输出如下(日期是索引):
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
感谢您的帮助!
首先,您需要找到日期的索引:
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)
这个我想不通。我在谷歌上搜索了很多网站并关注了很多视频,但我只是被困住了。我相信解决方案很简单....感谢所有帮助!
我有一个日期框,输出如下(日期是索引):
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
感谢您的帮助!
首先,您需要找到日期的索引:
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)