按列匹配两个数据框,并以特定顺序从另一列中提取值

时间:2018-12-03 08:18:53

标签: python pandas dataframe

我有两个dataframe看起来像这样

df1

    fileName    Text
0    file1        A
1    file2        B
2    file3        C
3    file4        D
4    file5        E


df2 

    fileName    Value
0    file3        0
1    file2        1
2    file1        1
3    file5        0
4    file6        1

df1.fileName的内容与df2.fileName的内容相同,但是顺序在df2中混乱。我想按df1.fileName的顺序提取value列。

1 个答案:

答案 0 :(得分:1)

如果df2['fileName']中有重复项,则创建ordered categorical列,排序并选择Value

print (df2)
  fileName  Value
0    file3      0
1    file2      1
2    file1      1
3    file5      0
4    file4      1
5    file1      1
6    file3      1


df2['fileName'] = pd.Categorical(df2['fileName'], categories=df1['fileName'], ordered=True)
out = df2.sort_values('fileName')['Value']
print (out)
2    1
5    1
1    1
0    0
6    1
4    1
3    0
Name: Value, dtype: int64