合并两个基于I.D字段的DataFrame时间戳

2024-10-01 05:06:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到一种方法,可以基于几个因素将pandas/python中的两个df组合成一个df。你知道吗

  1. 两个dfs中都存在一个i.d字段
  2. 每个df都有一个时间戳,df_1可以有一个或多个与id相关联的时间戳
  3. dfu 2只有一个与id相关的时间戳
  4. dfu 2时间戳将始终是dfu 1中时间戳的最早或第一个时间戳

我想要组合两个数据帧,其中df琰2时间戳是列中的第一个时间戳,df琰1的每个后续时间戳都在后面。你知道吗

所以输出看起来像

I.D                  |            Timestamp
E4242                            earliest_timestamp from df_2
E4242                            next_timestamp from df_1
E4242                            next_timestamp from df_1

感谢您的光临!你知道吗


Tags: 数据方法fromidpandasdf时间timestamp
1条回答
网友
1楼 · 发布于 2024-10-01 05:06:05

如果df2每个ID只包含一个日期总是正确的,并且该日期总是该ID的最早日期,那么您可以简单地连接df1和df2,然后按ID和时间戳排序吗?例如:

# Generate example data
df1 = pd.DataFrame({'id': [1, 1, 2, 3, 3, 3], 
                    'timestamp': pd.to_datetime(['2019-01-01', 
                                                 '2019-01-02', 
                                                 '2019-01-15', 
                                                 '2019-01-17', 
                                                 '2019-02-01', 
                                                 '2019-02-03'])})
df2 = pd.DataFrame({'id': [1, 2, 3], 
                    'timestamp': pd.to_datetime(['1959-06-01', 
                                                 '1989-12-01', 
                                                 '1999-01-25'])})

df = pd.concat([df1, df2])
df = df.sort_values(by=['id', 'timestamp']).reset_index(drop=True)
df

   id  timestamp
0   1 1959-06-01
1   1 2019-01-01
2   1 2019-01-02
3   2 1989-12-01
4   2 2019-01-15
5   3 1999-01-25
6   3 2019-01-17
7   3 2019-02-01
8   3 2019-02-03

相关问题 更多 >