python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Pandas按照时间维度合并多张表

Pandas实现按照时间维度合并多张表

作者:羊肉串儿加点辣

文章对比了Pandas中pd.merge()与pd.concat()的拼接方法,指出merge()通过索引合并更灵活,而concat()为硬性拼接,随后使用sort_index()解决索引排序问题,最终实现两表按时间值正确合并

1.数据样式和目标

1.1 数据样式

timevalue
1996-1-1111
1996-1-2222
1996-1-6333
1996-1-10444
timevalue
1996-1-2555
1996-1-5666
1996-1-11777
1996-1-12888

1.2 拼接目标样式

timevalue_Avalue_B
1996-1-1111null
1996-1-2222555
1996-1-5null666
1996-1-6333null
1996-1-10444null
1996-1-11null777
1996-1-12null888

2. 拼接方法

我尝试了pd.merge()和pd.concat()这两种方法,发现pd.merge()才是我想要的拼接形式,按索引拼接;

而pd.concat()属于硬性拼接,只会把双方的第一行第二行拼接一起。

2.1 pd.merge()

df = pd.merge(left=left_df, right=right_df, how='outer', on='time')
timevalue_Avalue_B
1996-1-1111null
1996-1-2222null
1996-1-6333null
1996-1-10444null
1996-1-2null555
1996-1-5null666
1996-1-11null777
1996-1-12null888

2.2 df.sort_index()

为了将上述数据处理成我们想要的格式,我尝试了df.groupby(),发现只能是DataframeGroupBy对象,而非我们想要的Dataframe,转换非常麻烦;

后来发现了df.sort_index()方法,按照索引排序,解决!

df = df.sort_index()
timevalue_Avalue_B
1996-1-1111null
1996-1-2222555
1996-1-5null666
1996-1-6333null
1996-1-10444null
1996-1-11null777
1996-1-12null888

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

阅读全文