python - 如何在 pandas 数据透视表中重复索引,以便 nan 填充无记录行?

标签 python pandas pivot-table

请原谅我措辞不当的问题——我不知道如何措辞。

鉴于此 pandas 数据透视表,

df = pd.DataFrame({'col1': list('AABB'),
                   'col2': list('acab'),
                   'values': [1,3,4,5]})
pt = pd.pivot_table(df,
                    index=['col1', 'col2'],
                    values='values',
                    aggfunc=sum)

输出:

col1  col2
A     a       1
      c       3
B     a       4
      b       5

我怎样才能让数据透视表输出这个:

col1  col2
A     a        1
      b      NaN
      c        3
B     a        4
      b        5
      c      NaN

最佳答案

如果将列转换为 category 数据类型(pandas 0.15 中的新功能!),您将获得所需的聚合:

df.col2 = df.col2.astype('category')
In [378]: df.groupby(['col1','col2']).sum()
Out[378]:
           values
col1 col2
A    a          1
     b        NaN
     c          3
B    a          4
     b          5
     c        NaN

关于python - 如何在 pandas 数据透视表中重复索引,以便 nan 填充无记录行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713888/

相关文章:

python - 如何从 pandas 数据框中的列中删除文本

Python Pandas iterrows 和 set_value 作为矢量化函数

vba - 使用 Vba 迭代数据透视表,同时将单个字段复制到单独的工作表中

mysql - 如何在 MySQL 中返回数据透视表输出?

python - 尽管使用了 end ="",为什么输出仍包含新行

python - 如何遍历目录树并继续循环?

python - Pandas 计算一列中值的出现次数

python - 如何使用 Groupby、Pivo​​t_table、Stack 和 Unstack reshape Pandas Dataframe

python - 我不知道通常使用python aiomysql。运行时间(当 aiomysql 不使用时)与 aiomysql 使用时的运行时间相同

python - Airflow 2 : get execution date inside task