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

1.数据样式和目标

1.1 数据样式

A表:

timevalue
1996-1-1111
1996-1-2222
1996-1-6333
1996-1-10444

B表:

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
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值