我有一个足球运动员数据集。我需要找到每个球员的罚球或排球的最大值,并在处添加一列,以显示最大值以及是否是罚球或排球。我尝试了以下代码:
import pandas as pd
import numpy as np
df=pd.read_excel(r'C:\Users\shrey\Desktop\FullData.xlsx')
for j,i in df.iterrows():
data=i[['Penalties','Volleys']]
i['max']=np.max(data)
i['max_attr']=i.idxmax()
但这给我一个错误-此dtype不允许进行归约运算'argmax' 我应该如何处理?
答案 0 :(得分:1)
您无需在此处迭代行。相反,您可以使用pd.DataFrame.max
和pd.DataFrame.idxmax
进行矢量化计算:
cols = ['Penalties', 'Volleys']
df['max'] = df[cols].max(1)
df['max_attr'] = df[cols].idxmax(1)
这是一个演示:
df = pd.DataFrame([[2, 3], [5, 1]], columns=['Penalties', 'Volleys'])
cols = ['Penalties', 'Volleys']
df['max'] = df[cols].max(1)
df['max_attr'] = df[cols].idxmax(1)
print(df)
Penalties Volleys max max_attr
0 2 3 3 Volleys
1 5 1 5 Penalties