gpt4 book ai didi

python - Iretarting over column 并为每一列创建 min() 列

转载 作者:行者123 更新时间:2023-11-28 22:09:07 25 4
gpt4 key购买 nike

我有如下数据框

d = {'Name':['Alisa','Bobby','jodha','jack','raghu','Cathrine',
'Alisa','Bobby','kumar','Alisa','Alex','Cathrine'],
'Age':[26,24,23,22,23,24,26,24,22,23,24,24],
'Score':[85,63,55,74,31,77,85,63,42,62,89,77]}

df = pd.DataFrame(d,columns=['Name','Age','Score'])
Name Age Score
0 Alisa 26 85
1 Bobby 24 63
2 jodha 23 55
3 jack 22 74
4 raghu 23 31
5 Cathrine 24 77
6 Alisa 26 85
7 Bobby 24 63
8 kumar 22 42
9 Alisa 23 62
10 Alex 24 89
11 Cathrine 24 77

当我运行下面的代码时,它工作正常并获得如图所示的输出。每个列的新列。

a=df.columns[1:]
df[a +'rat'] = df[a]/df[a].sum()
Name Age Score Agerat Scorerat
0 Alisa 26 85 0.091228 0.105853
1 Bobby 24 63 0.084211 0.078456
2 jodha 23 55 0.080702 0.068493
3 jack 22 74 0.077193 0.092154
4 raghu 23 31 0.080702 0.038605
5 Cathrine 24 77 0.084211 0.095890
6 Alisa 26 85 0.091228 0.105853
7 Bobby 24 63 0.084211 0.078456
8 kumar 22 42 0.077193 0.052304
9 Alisa 23 62 0.080702 0.077210
10 Alex 24 89 0.084211 0.110834
11 Cathrine 24 77 0.084211 0.095890

但是,当我想使用下面的代码 a 为每个列创建一个 Min 时,我收到错误 "KeyError: "None of [Index(['Agemin' , 'Scoremin'], dtype='object')] 在 [列] 中”。我希望它创建该列!

df[a +'min'] = df[a].min()

那么,我们如何为每一列创建 min()max()sum() 等列无需指定每一列的名称?

最佳答案

您可以使用 ** 传递参数,分配 系列中的多个标量值。索引成为列名,值广播到所有行。对于系列,add_suffix 添加到索引,而稍后我使用它添加到列名,这对于 DataFrames 是如何表现的。

import pandas as pd

df1 = df.select_dtypes('number')

df = df.assign(**df1.min().add_suffix('min'))
# Name Age Score Agemin Scoremin
#0 Alisa 26 85 22 31
#1 Bobby 24 63 22 31
#2 jodha 23 55 22 31
...
#10 Alex 24 89 22 31
#11 Cathrine 24 77 22 31

就我个人而言,我会concat另一个结果:

df = pd.concat([df, (df1/df1.sum()).add_suffix('rat')], axis=1)

# Name Age Score Agemin Scoremin Agerat Scorerat
#0 Alisa 26 85 22 31 0.091228 0.105853
#1 Bobby 24 63 22 31 0.084211 0.078456
#2 jodha 23 55 22 31 0.080702 0.068493
#...
#10 Alex 24 89 22 31 0.084211 0.110834
#11 Cathrine 24 77 22 31 0.084211 0.095890

关于python - Iretarting over column 并为每一列创建 min() 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com