gpt4 book ai didi

pandas - 如何在 Pandas 中的 2 个 DataFrame 之间进行交集匹配?

转载 作者:行者123 更新时间:2023-12-02 01:09:32 28 4
gpt4 key购买 nike

假设存在 2 个 DataFrames AB,如下所示

A:

a A
b B
c C

B:

1 2
3 4

如何生成CDataFrame之类的

a  A  1 2
a A 3 4
b B 1 2
b B 3 4
c C 1 2
c C 3 4

Pandas中有没有函数可以做这个操作?

最佳答案

首先,每个 DataFrame 中的所有值都必须是唯一的。

我认为您需要产品:

from  itertools import product

A = pd.DataFrame({'a':list('abc')})
B = pd.DataFrame({'a':[1,2]})

C = pd.DataFrame(list(product(A['a'], B['a'])))
print (C)
0 1
0 a 1
1 a 2
2 b 1
3 b 2
4 c 1
5 c 2

Pandas 纯解决方案 MultiIndex.from_product :

mux = pd.MultiIndex.from_product([A['a'], B['a']])

C = pd.DataFrame(mux.values.tolist())
print (C)
0 1
0 a 1
1 a 2
2 b 1
3 b 2
4 c 1
5 c 2
C = mux.to_frame().reset_index(drop=True)
print (C)
0 1
0 a 1
1 a 2
2 b 1
3 b 2
4 c 1
5 c 2

merge 交叉连接的解决方案和由 assign 的相同标量填充的列:

df = pd.merge(A.assign(tmp=1), B.assign(tmp=1), on='tmp').drop('tmp', 1)
df.columns = ['a','b']
print (df)
a b
0 a 1
1 a 2
2 b 1
3 b 2
4 c 1
5 c 2

编辑:

A = pd.DataFrame({'a':list('abc'), 'b':list('ABC')})
B = pd.DataFrame({'a':[1,3], 'c':[2,4]})

print (A)
a b
0 a A
1 b B
2 c C

print (B)
a c
0 1 2
1 3 4

C = pd.merge(A.assign(tmp=1), B.assign(tmp=1), on='tmp').drop('tmp', 1)
C.columns = list('abcd')
print (C)
a b c d
0 a A 1 2
1 a A 3 4
2 b B 1 2
3 b B 3 4
4 c C 1 2
5 c C 3 4

关于pandas - 如何在 Pandas 中的 2 个 DataFrame 之间进行交集匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45687731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com