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