我有一个带有多个空列的数据框。我当中有一些国旗栏。我只需要从数据框中删除空的Flag列。我需要一种解决方案来过滤出Flag列并将其从原始数据框中删除。
df = pd.DataFrame({'Last_Name': ['Smith', 'Tom', 'Brown'],
'First_Name': ['', '', ''],
'Age': [35, 45, 25],
'Flag1':['','',''],
'Flag2':['1','2','3'],
'Flag3':['','','']})
我的输出必须是:
Last_Name First_Name Age Flag2
0 Smith 35 1
1 Tom 45 2
2 Brown 25 3
答案 0 :(得分:3)
将filter
与replace
和isnull
一起使用,然后删除列:
drop_cols = df.filter(like='Flag').columns[df.filter(like='Flag').replace('',np.nan).isnull().all()]
df = df.drop(drop_cols, axis=1)
print(df)
Last_Name First_Name Age Flag2
0 Smith 35 1
1 Tom 45 2
2 Brown 25 3
答案 1 :(得分:1)
这似乎更简单。在列上创建一个布尔条件,然后相应地建立索引。
df = df.loc[:, df.astype(bool).all() | ~df.columns.str.match('Flag')]
df
Last_Name First_Name Age Flag2
0 Smith 35 1
1 Tom 45 2
2 Brown 25 3
在哪里
df.astype(bool).all()
Last_Name True
First_Name False
Age True
Flag1 False
Flag2 True
Flag3 False
dtype: bool
测试列中内容的真实性。空字符串本质上是虚假的,我们利用了这一点。