我有两个数据框 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句