Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫数据透视表使用熊猫0.22中的总和(最小计数=1)_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫数据透视表使用熊猫0.22中的总和(最小计数=1)

Python 熊猫数据透视表使用熊猫0.22中的总和(最小计数=1),python,pandas,dataframe,Python,Pandas,Dataframe,我正在将代码迁移到Pandas 0.22,并且在数据透视表中遇到了问题。 在版本0.20中,我有一行代码。其行为是,当透视表中的单元格为空时,总和聚合返回NAN workload_pivot_df = pd.pivot_table(workload_df, index=["athlete_id", "date"], values=["workload"], columns=["type"], aggfunc=('sum','last')) 但是,由于0.22的变化,当找不到数据时,sum现在返

我正在将代码迁移到Pandas 0.22,并且在数据透视表中遇到了问题。 在版本0.20中,我有一行代码。其行为是,当透视表中的单元格为空时,总和聚合返回NAN

workload_pivot_df = pd.pivot_table(workload_df, index=["athlete_id", "date"], values=["workload"], columns=["type"], aggfunc=('sum','last'))

但是,由于0.22的变化,当找不到数据时,sum现在返回0。文档中说,可以将min_count=1作为参数传递,以获得原始行为。但是,我无法在透视表中使用此功能。

可以使用
lambda
函数,对于相同的列名,可以使用
tuple
-第一个值是新列名,第二个聚合函数:

tup = ('sum', lambda x: x.sum(min_count=1))
workload_pivot_df = pd.pivot_table(workload_df, index=["athlete_id", "date"], 
                                    values=["workload"], 
                                    columns=["type"], aggfunc=(tup,'last'))
样本

workload_df = pd.DataFrame({'athlete_id':list('aaabbb'),
                   'date':pd.to_datetime(['2015-01-01'] * 3 + ['2015-01-01'] * 3),
                   'workload':[np.nan,np.nan,np.nan,4,2,3],
                   'type':list('aaaabb')})

print (workload_df)
  athlete_id       date type  workload
0          a 2015-01-01    a       NaN
1          a 2015-01-01    a       NaN
2          a 2015-01-01    a       NaN
3          b 2015-01-01    a       4.0
4          b 2015-01-01    b       2.0
5          b 2015-01-01    b       3.0

workload\u pivot\u df=pd.pivot\u表(workload\u df,index=[“运动员id”,“日期”],
值=[“工作负载”],
列=[“类型”]、aggfunc=(“总和”、“最后一次”))
打印(工作负载轴)
工作量
最后一笔
a型b型
运动员身份证日期

a 2015-01-01 NaN 0.0 NaN#您能提供一些发现此问题的最低限度数据吗?@warwickh-glady可以提供帮助!
workload_pivot_df = pd.pivot_table(workload_df, index=["athlete_id", "date"], 
                                    values=["workload"], 
                                    columns=["type"], aggfunc=('sum','last'))

print (workload_pivot_df)
                      workload               
                          last       sum     
type                         a    b    a    b
athlete_id date                              
a          2015-01-01      NaN  NaN  0.0  NaN #<-all NaNs created 0.0
b          2015-01-01      4.0  3.0  4.0  5.0


tup = ('sum', lambda x: x.sum(min_count=1))
workload_pivot_df = pd.pivot_table(workload_df, index=["athlete_id", "date"], 
                                    values=["workload"], 
                                    columns=["type"], aggfunc=(tup,'last'))

print (workload_pivot_df)
                      workload               
                          last       sum     
type                         a    b    a    b
athlete_id date                              
a          2015-01-01      NaN  NaN  NaN  NaN #<-back compatible need NaN
b          2015-01-01      4.0  3.0  4.0  5.0