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

Python Pandas-合并两个数据帧并统一列集,python,pandas,Python,Pandas,给定两个独立的数据帧,我希望合并它们并统一一组它们的连接列 例如: 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

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

例如:

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
中使用相同的列,然后使用++:


您也可以这样做:

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

啊。。。我一直在努力寻找
.stack()
我错过了最简单的解决方案。谢谢如果你已经解决了你的问题,就接受@bluesummers的解决方案
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