我正在处理这个数据集census.csv
代码:
df = pd.read_csv('Data/census.csv')
df = df[df['SUMLEV']==50]
print(df.head())
我的数据是这样的:
SUMLEV REGION DIVISION ... RNETMIG2013 RNETMIG2014 RNETMIG2015
1 50 3 6 ... -2.722002 2.592270 -2.187333
2 50 3 6 ... 22.727626 20.317142 18.293499
3 50 3 6 ... -7.167664 -3.978583 -10.543299
4 50 3 6 ... -5.403729 0.754533 1.107861
5 50 3 6 ... -1.402476 -1.577232 -0.884411
我想在按“STNAME”分组后,对两列进行聚合:
(df.set_index('STNAME').groupby(level=0)['POPESTIMATE2010','POPESTIMATE2011'].agg(Avg= np.average, Sum = np.sum))
错误:
----> 3 (df.set_index('STNAME').groupby(level=0)['POPESTIMATE2010','POPESTIMATE2011'].agg(Avg= np.average, Sum = np.sum))
f:\software_installations\anaconda3\lib\site-packages\pandas\core\groupby\generic.py in aggregate(self, func, *args, **kwargs)
922 elif func is None:
923 # nicer error message
--> 924 raise TypeError("Must provide 'func' or tuples of '(column, aggfunc).")
925
926 func = _maybe_mangle_lambdas(func)
TypeError: Must provide 'func' or tuples of '(column, aggfunc).
虽然其他人很快给出了一行代码片段,但我试图解释更多关于您拥有的选项类型,以及pandas
agg()
函数所理解的语法我们在处理什么
您正在处理的对象的类型是
因此,这可能是一个很好的开始,可以随时查看pandas.DataFrameGroupby.agg的文档
医生怎么说
给
agg
的参数可以是(1) 字符串(函数名)
如果您将函数名字符串作为参数,则它必须是“熊猫能够理解的函数名”。理解的函数名至少为:
'sum','mean','std'
。例如:由于需要计算两件事:均值和和和,因此需要两个函数调用。一个是“平均”,一个是“总和”
(2) 功能
也可以将任何函数作为参数。该函数应该将类似数组的数据(pd.Series)作为输入,并从中生成标量值。例如:
由于需要计算两件事:均值和和和,因此需要两个函数调用。一个是np.mean,一个是np.sum
(3) 功能列表
您还可以为
agg()
的参数提供函数列表。例如:这样做的好处是,您只需要一个函数调用如果希望使用多列计算相同的运算,请使用此选项
(4) 记录到列名->;功能
如果将字典作为
agg()
的参数,则键必须表示数据帧中的列名,值应为函数或函数列表。例如:这样做的好处是,您只需要一个函数调用如果希望使用不同的列计算不同的运算,请使用此选项
试试这个
那么:
注意,在这种情况下,groupby后面需要双方括号
相关问题 更多 >
编程相关推荐