使用list设置循环中的函数和名称输出

2024-05-03 18:44:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个循环来更改应用于DataFrame的函数,并用python命名输出

例如,我想计算相同数据帧的平均值、最大值、总和、最小值等,我想使用一个循环遍历这些值并命名输出。你知道吗

假设我有一个数据帧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

Tags: columns数据函数dataframedf定义mean命名
3条回答

由于您使用set 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

可以将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

没有字符串,您只需执行以下操作:

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 ^{}

calcs = {'sum', 'mean', 'max')
for calc in calcs:
    getattr(df, calc)()

相关问题 更多 >