我有两个熊猫数据框df1和df2。我想将它们组合到单个数据帧(df)中,但是删除出现在df1的'A'列中但该值不在df2的'A'列中的行。
输入:
[in] df1 = A B
0 i y
1 ii y
[in] df2 = A B
0 ii x
1 i y
2 iii z
3 iii z
所需的输出:
[out] df = A B
0 i y
1 ii y
2 ii x
3 i y
在上面的示例中,除了df2中的“ A”列中带有“ iii”的行之外,所有行均已添加到df中,因为“ iii”未出现在df1的列“ A”中的任何位置。
为了使这一步骤更进一步,数据帧的初始数量不限于两个。可能有三个或更多,我想删除所有数据框中未出现的所有列“ A”值。
我怎样才能做到这一点?
提前致谢!
这将适用于任何通用的数据帧列表。同样,数据帧的顺序也无关紧要。
df1 = pd.DataFrame([['i', 'y'], ['ii', 'y']], columns=['A', 'B'])
df2 = pd.DataFrame([['ii', 'x'], ['i', 'y'], ['iii', 'z'], ['iii', 'z']], columns=['A', 'B'])
dfs = [df1, df2]
set_A = set.intersection(*[set(dfi.A.tolist()) for dfi in dfs])
df = pd.concat([dfi[dfi.A.isin(set_A)] for dfi in dfs])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句