熊猫合并并连接

时间:2018-05-29 20:48:45

标签: python pandas

我想合并看起来像下面的数据(有许多不同的文件也持有bar数据)。有许多不同的数据框,设置如下。

id  bar  baz
 1   10   15
 2   12   69

id  bar  baz
 3   96   75

id  bar  baz
 4   45   76
 5   75   23

id  foo  bah
 1  0.1   81
 2  0.2   59
 3  0.1   89
 4  0.1  642
 5  0.2   51

我想将所有内容合并到一个包含idfoobahbarbaz列的文件中。我尝试在for循环中重复调用df = pd.merge(df, t_df, how='outer', on=key_trans[key]),但这不起作用,而是为每个原始变量生成列bar_xbar_y等。

上面的注意事项:key_trans是一个提供需要保留的数据的密钥,例如id(以及我在提出问题时简化过的其他类型的ID)。

1 个答案:

答案 0 :(得分:0)

请考虑以下df

    bar_x   bar_y   bar_z   foo id
0   10.0    NaN     NaN     0.1 1
1   12.0    NaN     NaN     0.2 2
2   64.0    NaN     NaN     0.1 3
3   NaN     NaN     10.0    0.1 4
4   NaN     12.0    NaN     0.2 5

使用:

df.set_index(['foo', 'id']).sum(axis=1).reset_index().rename(columns={0:'bar'})

输出:

    foo id  bar
0   0.1 1   10.0
1   0.2 2   12.0
2   0.1 3   64.0
3   0.1 4   10.0
4   0.2 5   12.0

通过编辑问题,我想到了以下解决方案

df.merge(pd.concat([df1, df2, df3], ignore_index=True))

   id   foo bar
0   1   0.1 10
1   2   0.2 12
2   3   0.1 96
3   4   0.1 45
4   5   0.2 75