根据其他数据框过滤熊猫数据框列

时间:2019-07-31 13:46:42

标签: python pandas

我有两个数据帧df1和df2。 df1提供有关某些元素(A,B,C ...)的一些数值数据,而df2是一个像分类表一样工作的数据帧,其索引为df1的列名。我想通过仅将匹配特定分类的列保留在df2中来过滤df1。

例如,让我们假设以下两个数据框,而我只想保留属于类'C1'的元素(即df1的列):

df1 = pd.DataFrame({'A': [1,2],'B': [3,4],'C': [5,6]},index=[0, 1])

df2 = pd.DataFrame({'Name': ['A','B','C'],'Class': ['C1','C1','C2'],'Subclass': [C11,C12,C21]},index=[0, 1, 2])

df2 = df2.set_index('Name')

预期结果应该是仅具有A和B列的数据帧df1,因为在df2中,我们可以看到A和B在类C1中。不知道该怎么做。我正在考虑先通过“类别”列中的“ C1”值过滤df2,然后检查df1.columns是否在df2.index中,但是我想有一种非常有效的方法。谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是使用索引切片的一种方法

df1.loc[:,df2.index[df2.Class=='C1']]
Out[578]: 
Name  A  B
0     1  3
1     2  4