我有2个数据帧df1和df2,均由8列组成,如下所示:
**df1**
╔══════════════════════════════════════════════════════════╗
║John ║ Mark ║ Jane ║ Natasha ║ Oliver ║ Tony ║ Judd ║ Ron ║
╚══════════════════════════════════════════════════════════╝
**df2**
╔══════════════════════════════════════════════════╗
║True ║True ║False ║True ║False ║False ║False ║True║
╚══════════════════════════════════════════════════╝
df1 的列是不同人的名字,而 df2 的列名是布尔值。我想做的是删除 df1 中所有在 df2 中具有对应的 False 值的列。因此,结果输出应如下所示:
**output**
╔════════════════════════════╗
║John ║ Mark ║ Natasha ║ Ron ║
╚════════════════════════════╝
我正在从csv文件读取两个数据帧。
我们将不胜感激。
注意:实际数据框各有500列。以8为例进行可视化,并显示数据框具有相等的列数
预先感谢
答案 0 :(得分:2)
您可以使用基本索引。但是,当您解析df2
时,列名重复并且被更改,因此需要进行一些清理。
设置
names = ['John', 'Mark', 'Jane', 'Natasha', 'Oliver', 'Tony', 'Judd', 'Ron']
cols = ['TRUE', 'TRUE.1', 'FALSE', 'FALSE.1', 'TRUE.2', 'FALSE.2', 'FALSE.3', 'TRUE.3']
df1 = pd.DataFrame(columns=names)
df2 = pd.DataFrame(columns=cols)
df1.loc[:, df2.columns.str.contains('TRUE')]
Empty DataFrame
Columns: [John, Mark, Oliver, Ron]
Index: []