我有 2 个 Pandas 数据框。
>>> df1
col1 col2
sec1 11 22
sec2 11 22
sec3 11 22
>>> df2
col1 col2
sec1 False False
sec2 False True
sec3 False False
如果 df2
中的列至少有一个True
,然后是 df1
中具有相同标题的列应该删除。
所以在这个例子中,预期的输出应该是
>>> df1
col1
sec1 11
sec2 11
sec3 11
这是我的 Python 代码
import pandas as pd
df1 = pd.DataFrame({'cond1': [11, 11, 11], 'cond2': [22, 22, 22]}, index=['sec1', 'sec2', 'sec3'])
df2 = pd.DataFrame({'cond1': [False, False, False], 'cond2': [False, True, False]}, index=['sec1', 'sed2', 'sec3'])
ds_remove = df2.any(axis=0)
df1.drop(ds_remove, inplace=True) # This line does not work.
你能帮帮我吗?
谢谢
最佳答案
让我们试试 mask
,如果 True
返回 NaN
那么我们只需要 dropna
out = df1.mask(df2).dropna(1)
Out[658]:
col1
sec1 11
sec2 11
sec3 11
修复代码
df1 = df1.loc[:,~ds_remove]
用drop
df1.drop(ds_remove[ds_remove].index, inplace=True,axis=1)
df1
Out[666]:
col1
sec1 11
sec2 11
sec3 11
关于python - 如何根据另一个数据框的条件删除数据框中的列,Python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68924914/