我正在导入一个具有可变列数的df,其标签以T开头
name lname age T0 T1 T2 T3 othercol
0 john doe 100 somevalue 34 somevalue
1 jane doe 99 somevalue somevalue
2 matt wright 55 78 somevalue 98
我想删除以T开头的列中所有具有空值的所有列。
我正在运行此:
In[1]: T_cols = [column for column in df.columns if column.startswith('T')]
In[2]: df.dropna( axis='columns', how='all', subset=T_cols, inplace=True)
我期望这个结果:
name lname age T0 T1 T3 othercol
0 john doe 100 somevalue 34 somevalue
1 jane doe 99 somevalue somevalue
2 matt wright 55 78 somevalue 98
相反,我得到一个例外:
File "/frame.py", line 4285, in dropna
raise KeyError(list(np.compress(check, subset)))
KeyError: ['T0', 'T1', 'T2', 'T3']
您可以尝试以下方法:
cols = [col for col in df.columns if col.startswith('T')]
filtered_cols = df.loc[:, cols].dropna(axis=1).columns
dropped_cols = [col for col in cols if col not in filtered_cols]
new_cols = [col for col in df if col not in dropped_cols]
print(df[new_cols])
输出:
name lname age T1 T3 othercol
0 john doe 100 34 somevalue NaN
1 jane doe 99 somevalue somevalue NaN
2 matt wright 55 somevalue 98 NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句