使用列表在循环中设置功能和名称输出

时间:2019-06-19 18:56:47

标签: python pandas

我想使用循环来更改应用于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

3 个答案:

答案 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)()