假设我有一个如下所示的 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 回答
![?](http://img1.sycdn.imooc.com/54584f8f00019fc002200220-100-100.jpg)
胡子哥哥
TA贡献1825条经验 获得超6个赞
您可以使用 df.pivot
df.pivot(index=['timestamp'], columns = ['id'], values = ['value']).reset_index()
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
郎朗坤
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
添加回答
举报
0/150
提交
取消