如何使用两个不同数据帧中的数据之间的链接创建数据框

时间:2017-05-21 00:21:19

标签: python pandas

我有一个像以下人员的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
       3       2

我怎样才能用熊猫来实现这个目标?我不明白如何加入这种情况,因为它不是一个接一个的东西......

3 个答案:

答案 0 :(得分:0)

尝试使用import pandas as pd df1 = pd.read_csv('Data1.csv') df2 = pd.read_csv('Data2.csv') print df1 print df2 ,假设你有df1和df2:

   pid  name job
0    1  Mike   A
1    2  Lucy   A
2    3  Jeff   B

df1:

   id name
0   1    A
1   2    B
2   3    C

和df2:

df2['job']=df2['name']
df_result = df1.merge(df2, on='job', how='left')
print df_result[['pid','id']]

然后:

   pid  id
0    1   1
1    2   1
2    3   2

它会打印出来:

FILE* fp;
size_t len = 0;
char* line = NULL;
ssize_t read;
fp = fopen("test.txt", "r");
while ((read = getline(&line, &len, fp)) != -1) {
    printf("Retrieved line of length %zu :\n", read);
    printf("%s", line);
}

答案 1 :(得分:0)

这是你正在寻找的吗?

   pid  id
0    1   1
1    2   1
2    3   2

输出:

int main() {
    bool bacon = true;
    if (bacon)
    {
        printf("this worked?");
    }
}

答案 2 :(得分:0)

两个给定的数据帧如下:

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选项用于其他"加入"如果你愿意的话。