Python pandas 数据透视不是唯一索引

标签 python python-3.x pandas

我有一个 df,它以日期作为索引,并有两列数字和类别,如下所示

 
    number  category
date        
2015-01-02  6.44    a
2015-01-02  100.00  n
2015-01-02  NaN     a
2015-01-02  0.19    d
2015-01-02  25.00   m
2015-01-02  1.00    n
2015-01-05  455.00  d
2015-01-05  18.78   m
2015-01-05  9.85    s

我想做的是找到每个“类别”和每个月的“数字”总和。我认为最好的选择是做一个数据透视表,比如

 df.pivot(index='date', columns='category', values='number')

但由于日期值不唯一,我收到错误。

有什么想法吗?

最佳答案

我相信你想要pivot_table而不是pivot

注意:由于日期似乎是索引,因此我首先执行重置索引

df.reset_index().pivot_table(index = "date",columns = "category", 
                            values = "number", aggfunc = "sum")

产量

category    a     d       m      n    s
date                    
2015-01-02  6.44  0.19    25.00  101  NaN
2015-01-05  NaN   455.00  18.78  NaN  9.85

关于Python pandas 数据透视不是唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278232/

相关文章:

python - 如何在 Python 的装饰器中访问类属性?

python-3.x - 特征匹配+单应性

python-3.x - 如何重新格式化 CSV 中的日期以仅显示 MM/YYYY

python - 如何提取日期条件下的行

python - 使用read_sas后如何从pandas对象类型的b'Text'中获取文本?

python - 读取大文件(> 8GB)并将数据转储到字典中并再次加载的最快方法

python - 如何在没有高级集合的情况下删除某个字母的所有出现? (Python)

python - 可以重新忽略惰性量词吗?

python - 类型错误 : '<' not supported between instances of 'State' and 'State' PYTHON 3

python - 转换为以行作为列表的普通数据框。将行拆分为列