我有一个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/

10-12 19:27