【发布时间】:2026-01-04 03:00:01
【问题描述】:
假设我有 n dataframes,在这个例子中 n = 3。
**df1**
A B C
0 True 3 21.0
1 True 1 23.0
2 False 2 25.0
3 False 4 25.5
4 False 1 25.0
5 True 0 26.0
**df2**
A B C
0 True 3 21.0
1 True 1 23.0
2 False 2 25.0
3 False 4 25.5
4 True 2 19.0
**df3**
A B C
0 True 3 21.0
1 True 2 23.0
2 False 2 25.0
3 False 1 25.0
4 False 4 25.5
5 True 0 27.50
**dfn** ...
我想要一个dataframe,其中包含每个dataframe dfn 中出现C 列值的所有行。所以这是intersection 的dataframes 在列上的一种union,在这种情况下是C 列。因此对于上述数据帧,具有19.0、26.0 和27.50 的行不会进入最终的dataframe 是:
**Expected df**
0 True 3 21.0
1 True 1 23.0
2 False 2 25.0
3 False 4 25.5
4 False 1 25.0
0 True 3 21.0
1 True 1 23.0
2 False 2 25.0
3 False 4 25.5
0 True 3 21.0
1 True 2 23.0
2 False 2 25.0
3 False 1 25.0
4 False 4 25.5
所以一行继续存在到finaldataframe,当且仅当,在all中可以看到C列中的值dataframes.
可重现的代码:
import pandas as pd
df1 = pd.DataFrame({'A': [True,True,False,False,False,True], 'B': [3,1,2,4,1,0],
'C': [21.0,23.0,25.0,25.5,25.0,26.0]})
df2 = pd.DataFrame({'A': [True,True,False,False,False], 'B': [3,1,2,4,2],
'C': [21.0,23.0,25.0,25.5,19.0]})
df3 = pd.DataFrame({'A': [True,True,False,False,False,True], 'B': [3,2,2,1,4,0],
'C': [21.0,23.0,25.0,25.0,25.5,27.5]})
dfn = ...
【问题讨论】:
-
您的预期结果是什么?我不确定我是否理解你描述的逻辑。
-
查看我发布的预期结果的编辑。
-
我无法理解这个问题,而且它不同意它自己的例子。值 C = 23.0 在任何 dfs 中都没有重复,但它通过了过滤器。最后在底部正确说明:当且仅当在所有数据帧中都可以看到 C 列中的值时,才在一行中过滤 不要说“重复”
-
抱歉,我可能在您查看数据时编辑了数据。现在预期是正确的。
-
我发布了一个不需要迭代的解决方案,或者一个 n x m 中间矩阵。
标签: pandas filter intersection concat