繁体   English   中英

Pandas pivot_table 删除返回全部无的聚合函数的值,即使 dropna 参数为 False

[英]Pandas pivot_table drops values for aggregate functions that return all None, even if dropna argument is False

pandas pivot_tabledropna=False参数没有按照我的预期做。 我从以下 DataFrame 开始:

import pandas as pd
# pd.__version__ = '0.23.3'

df = pd.DataFrame({'fruit':['apple','orange','peach','apple','peach'], 
    'size': [1,1.5,1,2,1],
    'taste': [7,8,6,6,10]})

...以及以下聚合函数:

def return_one(x): 
    return 1

def return_sum(x):
    return sum(x)

def return_none(x):
    return None 

我想重塑df以便:

  • 索引由原始列名('size','taste')组成。
  • 值是应用于组内值的聚合函数的结果。
  • 列是水果类型('apple'、'orange'、'peach')

以下pivot_table几乎就在那里:

pd.pivot_table(df, columns='fruit', 
               aggfunc=[return_sum,return_none,return_one], 
               dropna=False)

return_none 返回的值已被删除

除了return_none 的return_none已被删除。 我希望透视表包含一组用于return_none function 的空单元格,因为dropna=False ,但事实并非如此。 谁能建议如何包含 return_none 的return_none

此问题是在pandas 存储库中提出的,该修复已于 2019 年 4 月实施 在 Pandas 的当前版本中, pivot_table Dropna参数在为 False 时受到尊重:

import pandas as pd
# pd.__version__ is '1.5.0'

df = pd.DataFrame({'fruit': ['apple','orange','peach','apple','peach'], 
    'size': [1, 1.5, 1, 2, 1],
    'taste': [7, 8, 6, 6, 10]})

def return_one(x): 
    return 1

def return_sum(x):
    return sum(x)

def return_none(x):
    return None 

pd.pivot_table(df, columns='fruit', 
               aggfunc=[return_sum, return_none, return_one], 
               dropna=False)

回报:

      return_sum              return_none              return_one             
fruit      apple orange peach       apple orange peach      apple orange peach
size         3.0    1.5   2.0        None   None  None          1      1     1
taste       13.0    8.0  16.0        None   None  None          1      1     1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM