[英]Merge two Pandas DataFrames on their DatetimeIndex columns
[英]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.