繁体   English   中英

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

[英]Filter pandas dataframe columns based on other dataframe

我有两个数据框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中,但是我想有一种非常有效的方法。 谢谢你的帮助

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM