为了账号安全,请及时绑定邮箱和手机立即绑定

使用时间序列中每个 id 的值的列创建一个新的 pandas 数据框

使用时间序列中每个 id 的值的列创建一个新的 pandas 数据框

慕尼黑8549860 2023-09-12 16:58:39
假设我有一个如下所示的 DataFrame:            timestamp    id  value0 2020-09-27 10:00:00     a     100 2020-09-27 10:00:00     b     130 2020-09-27 10:00:00     c     160 2020-09-27 10:01:00     a     110 2020-09-27 10:01:00     b     140 2020-09-27 10:01:00     c     170 2020-09-27 10:02:00     a     120 2020-09-27 10:02:00     b     15我想创建一个新的 DataFrame,其中包含特定时间戳处每个 id 的值的列。                            a    b    c2020-09-27 10:00:00        10   13   162020-09-27 10:01:00        11   14   172020-09-27 10:02:00        12   15  NaN我尝试过以下方法:df2 = pd.DataFrame(df['timestamp'].unique())for unique in df['id'].unique():    df2 = df2.join(df[df['id']==unique]['value'])    df2.rename(columns={"value": unique})但是,我收到以下错误:ValueError: columns overlap but no suffix specified: Index(['value'], dtype='object')有人可以解释一下出了什么问题和/或获得结果的更好方法是什么吗?
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您可以使用 df.pivot

df.pivot(index=['timestamp'], columns = ['id'], values = ['value']).reset_index()


查看完整回答
反对 回复 2023-09-12
?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可以使用df.pivot_table()


In [798]: df.pivot_table(values = 'value', index='timestamp', columns = 'id').reset_index()

Out[798]: 

id            timestamp     a     b     c

0   2020-09-27 10:00:00  10.0  13.0  16.0

1   2020-09-27 10:01:00  11.0  14.0  17.0

2   2020-09-27 10:02:00  12.0  15.0   NaN


查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信