我有一个像以下人员的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
我怎样才能用熊猫来实现这个目标?我不明白如何加入这种情况,因为它不是一个接一个的东西......
答案 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
选项用于其他"加入"如果你愿意的话。