Python 熊猫数据透视表使用熊猫0.22中的总和(最小计数=1)
我正在将代码迁移到Pandas 0.22,并且在数据透视表中遇到了问题。 在版本0.20中,我有一行代码。其行为是,当透视表中的单元格为空时,总和聚合返回NANPython 熊猫数据透视表使用熊猫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现在返
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