我想使用循环来更改应用于DataFrame的函数并以python命名输出
例如,我想计算同一DataFrame的均值,最大值,总和,最小值等,我想使用一个循环遍历这些变量并命名输出。
说我有一个DataFrame df ...
numbs = [[ 1,2,4],[34,5,6],[22,4,5]]
df = pd.DataFrame(numbs,columns=['A','B','C'])
我想使用此calcs dict定义应用于df的函数并命名输出,就像这样
calcs = {'sum','mean','max'}
for i in calcs:
('df'+ i) = df.i
我一直在寻找
之类的输出dfsum
A 57
B 11
C 15
dfmean
A 19.000
B 3.667
C 5.000
etc
答案 0 :(得分:4)
您可以将agg
与一系列功能结合使用:
numbs = [[ 1,2,4],[34,5,6],[22,4,5]]
df = pd.DataFrame(numbs,columns=['A','B','C'])
df_out = df.agg(['mean','max','min'])
print(df_out.loc['mean'])
print(df_out.loc['max'])
print(df_out.loc['min'])
您可以使用loc
使用索引选择来访问数据框中的每个系列。
输出:
A 19.000000
B 3.666667
C 5.000000
Name: mean, dtype: float64
A 34.0
B 5.0
C 6.0
Name: max, dtype: float64
A 1.0
B 2.0
C 4.0
Name: min, dtype: float64
答案 1 :(得分:1)
由于您使用集合calcs
,因此可以直接在其上使用agg
,如下所示:
calcs = {'sum','mean','max'}
df.agg(calcs).T.add_prefix('df')
Out[922]:
dfmax dfsum dfmean
A 34.0 57.0 19.000000
B 5.0 11.0 3.666667
C 6.0 15.0 5.000000
答案 2 :(得分:0)
没有字符串,您可以简单地执行以下操作:
calcs = {pd.DataFrame.sum, pd.DataFrame.mean, pd.DataFrame.max}
# or even with the builtins: {sum, pd.DataFrame.mean, max}
for calc in calcs:
df.apply(calc)
如果您需要使用字符串,则use the builtin getattr
:
calcs = {'sum', 'mean', 'max')
for calc in calcs:
getattr(df, calc)()