繁体   English   中英

Pandas - 合并两个数据帧并统一列集

[英]Pandas - Merge two dataframes and unify set of columns

给定两个独立的数据帧,我希望合并它们并统一一组连接的列。

例:

In[1]: df1

Out[1]: 
   a_id     a_time a_val
0     1  100000000     a
1     2  200000000     b
2     3  300000000     c

In[10]: df2

Out[10]: 
   b_id     b_time b_val
0     1  100000000     d
1     2  150000000     e
2     3  350000000     f

我正在寻找的结果数据帧如下

   id       time val
0   1  100000000   a
1   1  100000000   d
2   2  150000000   e
3   2  200000000   b
4   3  300000000   c
5   3  350000000   f

假设两个表都存在所有ID,则结果应为len(df1) + len(df2)

我正在使用.stack()查看一些结果,但我无法弄清楚如何在合并两个表时使其工作。

请注意,时间可能相同,也可能不同。

我认为你需要在df使用相同的列,然后使用concat + sort_values + reset_index

cols = ['id', 'time', 'val']
df1.columns = cols
df2.columns = cols

df = pd.concat([df1, df2]).sort_values('id').reset_index(drop=True)

print (df)
   id       time val
0   1  100000000   a
1   1  100000000   d
2   2  200000000   b
3   2  150000000   e
4   3  300000000   c
5   3  350000000   f

你也可以这样做:

In [45]: pd.concat([df.rename(columns=lambda x: re.sub(r'.*?_',' ',x))
                    for df in [df1,df2]],
                   ignore_index=True)
Out[45]:
    id       time  val
0    1  100000000    a
1    2  200000000    b
2    3  300000000    c
3    1  100000000    d
4    2  150000000    e
5    3  350000000    f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM