我有一个DataFrame,其列=['date','id','value'],其中id表示不同的产品。假设我们有n种产品。我想创建一个新的数据栏,其中列= [日期]、“ValueID1”、“ValueIDn”,如果这些值存在,则将这些值分配给相应的日期行,如果没有,则将NA指定为值。
最佳答案
假设您有以下DF:
In [120]: df
Out[120]:
date id value
0 2001-01-01 1 10
1 2001-01-01 2 11
2 2001-01-01 3 12
3 2001-01-02 3 20
4 2001-01-03 1 20
5 2001-01-04 2 30
您可以使用pivot_table()方法:
In [121]: df.pivot_table(index='date', columns='id', values='value')
Out[121]:
id 1 2 3
date
2001-01-01 10.0 11.0 12.0
2001-01-02 NaN NaN 20.0
2001-01-03 20.0 NaN NaN
2001-01-04 NaN 30.0 NaN
或
In [122]: df.pivot_table(index='date', columns='id', values='value', fill_value=0)
Out[122]:
id 1 2 3
date
2001-01-01 10 11 12
2001-01-02 0 0 20
2001-01-03 20 0 0
2001-01-04 0 30 0
关于python - Pandas 按日期分组,将值分配给列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42714991/