我有一个数据框
df with columns=['ID','Region','Day 1','Day 2','Day 3','Day 4','Day 5']
如何在'Day 1','Day 2','Day 3','Day 4','Day 5'
列中删除包含NaN的行?
我想使用"从第1天到第5天"
df.dropna(axis=0, how='all', thresh=None, subset=['Day 1':'Day 5'], inplace=True)
但上面的代码似乎无法正常工作
答案 0 :(得分:0)
您必须重复所有列,例如由:
c = ['Day {}'.format(x) for x in range(1 , 6)]
print (c)
['Day 1', 'Day 2', 'Day 3', 'Day 4', 'Day 5']
或者:
c = df.loc[:, 'Day 1':'Day 5'].columns
df.dropna(axis=0, how='all', thresh=None, subset=c, inplace=True)
<强>示例强>:
df = pd.DataFrame({'ID':list('abcdef'),
'Region':[np.nan,5,4,5,5,4],
'Day 1':[7,8,9,4,2,np.nan],
'Day 2':[1,3,5,7,1,np.nan],
'Day 3':[np.nan] * 6,
'Day 4':[5,3,6,9,2,np.nan],
'Day 5':[5,3,6,9,2,np.nan]})
print (df)
Day 1 Day 2 Day 3 Day 4 Day 5 ID Region
0 7.0 1.0 NaN 5.0 5.0 a NaN
1 8.0 3.0 NaN 3.0 3.0 b 5.0
2 9.0 5.0 NaN 6.0 6.0 c 4.0
3 4.0 7.0 NaN 9.0 9.0 d 5.0
4 2.0 1.0 NaN 2.0 2.0 e 5.0
5 NaN NaN NaN NaN NaN f 4.0
c = df.loc[:, 'Day 1':'Day 5'].columns
df.dropna(axis=0, how='all', thresh=None, subset=c, inplace=True)
print (df)
Day 1 Day 2 Day 3 Day 4 Day 5 ID Region
0 7.0 1.0 NaN 5.0 5.0 a NaN
1 8.0 3.0 NaN 3.0 3.0 b 5.0
2 9.0 5.0 NaN 6.0 6.0 c 4.0
3 4.0 7.0 NaN 9.0 9.0 d 5.0
4 2.0 1.0 NaN 2.0 2.0 e 5.0