Python 使用timeseries中每个id的值列创建新的dataframe
假设我有一个数据帧,看起来像这样:Python 使用timeseries中每个id的值列创建新的dataframe,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个数据帧,看起来像这样: timestamp id value 0 2020-09-27 10:00:00 a 10 0 2020-09-27 10:00:00 b 13 0 2020-09-27 10:00:00 c 16 0 2020-09-27 10:01:00 a 11 0 2020-09-27 10:01:00 b 14 0 2020-09-27 10:01:00
timestamp id value
0 2020-09-27 10:00:00 a 10
0 2020-09-27 10:00:00 b 13
0 2020-09-27 10:00:00 c 16
0 2020-09-27 10:01:00 a 11
0 2020-09-27 10:01:00 b 14
0 2020-09-27 10:01:00 c 17
0 2020-09-27 10:02:00 a 12
0 2020-09-27 10:02:00 b 15
我想创建一个新的DataFrame,在特定的时间戳上为每个id创建一列值
a b c
2020-09-27 10:00:00 10 13 16
2020-09-27 10:01:00 11 14 17
2020-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:列重叠但没有指定后缀:Index(['value'],dtype='object')
有人能告诉我哪里出了问题和/或什么是获得结果的更好方法吗?您可以使用df
您可以使用:
您可以执行df.pivot('timestamp','id','value')
df.pivot(index=['timestamp'], columns = ['id'], values = ['value']).reset_index()
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