Python 如何使用两个不同数据帧中的数据之间的链接创建数据帧
我有一个熊猫数据框,用于以下人员:Python 如何使用两个不同数据帧中的数据之间的链接创建数据帧,python,pandas,Python,Pandas,我有一个熊猫数据框,用于以下人员: pid name job 1 Mike A 2 Lucy A 3 Jeff B 第二个是针对以下工作: id name 1 A 2 B 3 C 我想要生成的是第三个数据框,其中列出了人员和工作之间的联系,因此在这个虚拟示例中,期望的结果将是: personid jobid 1 1 2 1
pid name job
1 Mike A
2 Lucy A
3 Jeff B
第二个是针对以下工作:
id name
1 A
2 B
3 C
我想要生成的是第三个数据框,其中列出了人员和工作之间的联系,因此在这个虚拟示例中,期望的结果将是:
personid jobid
1 1
2 1
3 2
我怎样才能用熊猫做到这一点?我不明白在这种情况下如何加入,因为这不是按行操作…尝试使用
pandas
,假设您有df1和df2:
import pandas as pd
df1 = pd.read_csv('Data1.csv')
df2 = pd.read_csv('Data2.csv')
print df1
print df2
df1:
和df2:
id name
0 1 A
1 2 B
2 3 C
然后:
它将打印出:
pid id
0 1 1
1 2 1
2 3 2
尝试使用
pandas
,假设您有df1和df2:
import pandas as pd
df1 = pd.read_csv('Data1.csv')
df2 = pd.read_csv('Data2.csv')
print df1
print df2
df1:
和df2:
id name
0 1 A
1 2 B
2 3 C
然后:
它将打印出:
pid id
0 1 1
1 2 1
2 3 2
这就是你要找的吗
output = pd.merge(persons, jobs, how='left', left_on='job', right_on='name')[['pid', 'id']]
输出:
pid id
0 1 1
1 2 1
2 3 2
这就是你要找的吗
output = pd.merge(persons, jobs, how='left', left_on='job', right_on='name')[['pid', 'id']]
输出:
pid id
0 1 1
1 2 1
2 3 2
两个给定的数据帧如下所示:
import pandas as pd
people_df = pd.DataFrame([[1, "Mike", "A"], [2, "Lucy", "A"], [3, "Jeff", "B"]], columns=["pid", "name", "job"])
jobs_df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns=["id", "name"])
您可以使用merge
方法获得所需的结果
merged_df = pd.merge(people_df, jobs_df, left_on='job', right_on='name')
result = merged_df[['pid', 'id']].rename(columns={'pid': 'personid', 'id': 'jobid'}) # for extracting and renaming data
“内部联接”用于默认的
merge
方法。如果需要,您可以对其他“连接”使用how
选项。两个给定的数据帧如下所示:
import pandas as pd
people_df = pd.DataFrame([[1, "Mike", "A"], [2, "Lucy", "A"], [3, "Jeff", "B"]], columns=["pid", "name", "job"])
jobs_df = pd.DataFrame([[1, "A"], [2, "B"], [3, "C"]], columns=["id", "name"])
您可以使用merge
方法获得所需的结果
merged_df = pd.merge(people_df, jobs_df, left_on='job', right_on='name')
result = merged_df[['pid', 'id']].rename(columns={'pid': 'personid', 'id': 'jobid'}) # for extracting and renaming data
“内部联接”用于默认的
merge
方法。如果您愿意,您可以对其他“加入”使用how
选项。有没有办法让“工作”的比较更智能一些?在我的现实生活场景中,字符串不匹配100%,您认为字符串不匹配100%是什么意思?如果存在脏数据,则可以在进行比较之前对其进行清理。合并必须有一个共享密钥,该密钥应位于两个数据帧中。有没有办法使“作业”上的比较更智能一些?在我的现实生活场景中,字符串不匹配100%,您认为字符串不匹配100%是什么意思?如果存在脏数据,则可以在进行比较之前对其进行清理。合并必须获得一个共享密钥,该密钥应位于两个数据帧中。