匹配来自不同数据帧的id并将列值排列到python中的单个数据帧中

时间:2018-03-16 04:23:34

标签: python pandas

我有3个数据框,如下所示,

`df1 = [1q2 123         1q3 212       1d4 234 ...]

df2 = [1q1 223       1q2 126       1q3 42       1d4 314 ...] df3 = [1q2 923       1q4 121       1d3 423 ...]`

我怎样才能得到像这样的结果 dfans=[1q1 0 223 0
1q2 123 126 923 1q3 212 42 423 1d4 234 314 121....]

column1包含id列2,在匹配id之后获取id的正确值,来自df1; 类似的值与第3列中的df2和来自df3的值匹配相匹配。 如果没有该id的值,则在该位置放置0。 有什么办法吗?

1 个答案:

答案 0 :(得分:0)

这是一个简单的合并。

import pandas as pd
df1 = pd.DataFrame({'id' : ['A', 'B', 'D', 'E'], 'var1' : [1, 2, 5, 8]})
df2 = pd.DataFrame({'id' : ['B', 'C', 'D', 'E'], 'var2' : [1, 3, 8, 8]})
df3 = pd.DataFrame({'id' : ['A', 'B', 'C', 'D'], 'var3' : [2, 4, 6, 7]})

dfAns = df1.merge(df2, on = 'id', how = 'outer').merge(df3, on='id', how='outer').fillna(0)

输出看起来像 -

enter image description here