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%是什么意思?如果存在脏数据,则可以在进行比较之前对其进行清理。合并必须获得一个共享密钥,该密钥应位于两个数据帧中。