python - 如何根据另一个数据框的条件删除数据框中的列,Python3

标签 python python-3.x pandas dataframe

我有 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/

相关文章:

python - 如何将 pandas 样式应用于多列

python - 如何通过变量名称导入模块以及如何命名该模块

python - 为什么 LSTM 的导数设置为零

python - 如何在Python客户端服务器套接字编程之间实现SSL连接

python - 有人能解释一下这个 Python 程序中 * 的用法吗?

python - pandas 中一个热向量的多重索引

Python JSONDecoder自定义翻译null类型

python - 在 RHEL 7 上使用自定义 TCL/TK 安装 Python 3.12

python - 我的 Python 无法正确读取 XML

python - 如何将具有坐标和频率的字典转换为矩阵?