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