熊猫:如何将多个具有相同列名的数据框合并到一个重复值?

时间:2019-12-12 13:42:41

标签: python pandas

this question之后,

  

我有两个数据集,它们是由不同的采集系统以不同的采样率同时采集的。一个非常规律​​,而另一个则不是。我想创建一个包含两个数据集的单个数据框,并使用规则间隔的时间戳(以秒为单位)作为两者的参考。不规则采样的数据应插在规则间隔的时间戳上。

我的情况完全相同,但是我的t列可能重复。 我想保留t重复的每一行,数据列最大的那一行。

按照原始示例:

df1:
    t   y1
0  0.0  0.0
1  0.5  0.5
2  1.0  1.0
3  1.0  3.0
4  1.5  1.5
5  2.0  2.0

df2:
    t    y2
0  0.00  0.00
1  0.34  1.02
2  1.01  3.03
3  1.40  4.20
4  1.60  4.80
5  1.70  5.10
6  2.01  6.03


df_combined:
     t   y1   y2
0  0.0  0.0  0.0
1  0.5  0.5  1.5
2  1.0  3.0  3.0
3  1.5  1.5  4.5
4  2.0  2.0  6.0

注意t = 1.0,现在y1 = 3.0

我该怎么做?

2 个答案:

答案 0 :(得分:1)

有三个任务:

  1. df1上放置重复项
  2. 内插df2
  3. 将两者合并

这是一个解决方案

(df2.set_index('t')
     .reindex(new_idx)
     .interpolate('index')
     .reset_index()
     .merge(df1.sort_values('y1', ascending=False)
               .drop_duplicates('t'),    
            on='t', how='right')
)

输出:

     t   y2   y1
0  0.0  0.0  0.0
1  0.5  1.5  0.5
2  1.0  3.0  3.0
3  1.5  4.5  1.5
4  2.0  6.0  2.0

答案 1 :(得分:-1)

如果您要处理“ TIMESTAMPS”,那么您可以使用datetime包,它是个人不关注的重要内容之一,也是时间序列预测的重要内容之一