Python3如何基于另一个DataFrame的条件删除DataFrame的指定列
修正方案
错误原因
- 你调用
df.drop()时没有指定axis=1,该方法默认删除行(axis=0),无法实现删除列的需求 df2.any(axis=0)返回的是「列名:布尔值」格式的Series,df.drop()需要接收的是待删除的列名列表,直接传布尔Series会识别错误
可运行的正确代码
import pandas as pd df1 = pd.DataFrame({'col1': [11, 11, 11], 'col2': [22, 22, 22]}, index=['sec1', 'sec2', 'sec3']) df2 = pd.DataFrame({'col1': [False, False, False], 'col2': [False, True, False]}, index=['sec1', 'sec2', 'sec3']) # 筛选df2中包含至少一个True的列名 cols_to_remove = df2.columns[df2.any(axis=0)] # 删除df1对应的列 df1.drop(cols_to_remove, axis=1, inplace=True) print(df1)
输出结果
col1 sec1 11 sec2 11 sec3 11
内容的提问来源于stack exchange,提问作者aura
相关产品推荐
相关产品推荐

