gpt4 book ai didi

python - 如何在合并列名时连接两个表

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:54 25 4
gpt4 key购买 nike

我有两个数据框 df1 和 df2。一个看起来像

  Surname Knownas        TB
0 K S 79.3
1 H E 79.1
2 I S 78.3
3 P B 78.2
4 W A 78.1

其他的看起来像

  Mathematics           Name
0 A* H,E
1 A* P,E
2 A* L,J
3 A* W,D
4 A C,K

我想加入这两个数据框,但有问题。

我想使用 Name 作为 df2 的键,但对于 df1,我需要将 Surname 和 Knownas 字段用逗号连接起来,以将其用作键。换句话说,df1 中的键将是“K,S”“T,J”“I,S”等等。

我已经阅读并重新阅读了手册,但我不知道如何执行此操作。

最佳答案

我会将 Name 列扩展为两列(SurnameKnownas),并使用 Surname 和两个 DF 中的 Knownas 列:

import six
import pandas as pd

data = """\
Surname Knownas TB
0 K S 79.3
1 T J 79.1
2 I S 78.3
3 P B 78.2
4 W A 78.1
"""

df1 = pd.read_csv(six.StringIO(data), sep='\s+', index_col=0)
print(df1)

data = """\
Mathematics Name
0 A* H,E
1 A* P,E
2 A* L,J
3 A* W,D
4 A C,K
5 A K,S
"""
df2 = pd.read_csv(six.StringIO(data), sep='\s+', index_col=0)
print(df2)
df2[['Surname', 'Knownas']] = df2.Name.str.split(',', expand=True)
print(df2)

merge = pd.merge(df1, df2, on=['Surname','Knownas'])
print(merge)

输出:

  Surname Knownas    TB
0 K S 79.3
1 T J 79.1
2 I S 78.3
3 P B 78.2
4 W A 78.1
Mathematics Name
0 A* H,E
1 A* P,E
2 A* L,J
3 A* W,D
4 A C,K
5 A K,S
Mathematics Name Surname Knownas
0 A* H,E H E
1 A* P,E P E
2 A* L,J L J
3 A* W,D W D
4 A C,K C K
5 A K,S K S
Surname Knownas TB Mathematics Name
0 K S 79.3 A K,S

或者,您可以在 DF1 中创建 Name 列,并使用 Name 列合并两个 DF:

df1['Name'] = df1.Surname + ',' + df1.Knownas
merge = pd.merge(df1, df2, on=['Name'])

PS 我特意将 row5 添加到第二个数据帧,因此现在至少可以匹配一行

关于python - 如何在合并列名时连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35947561/

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