[英]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.