在新列中插入数据的平均值

2024-07-03 05:54:09 发布

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

我想得到猎鹰和鹦鹉的平均值,并插入新的“平均值”栏。两只猎鹰的平均值应该相同,鹦鹉的平均值也应该相同

sry我试着用谷歌搜索这类东西,阅读文档,但仍然无法找到答案:(

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'], 'Max 
Speed': [380., 370., 24., 26.]})
print (df)

df['Mean'] = df.groupby(['Animal']).mean()

print (df)

Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0
2  Parrot       24.0
3  Parrot       26.0

   Animal  Max Speed  Mean
0  Falcon      380.0   NaN
1  Falcon      370.0   NaN
2  Parrot       24.0   NaN
3  Parrot       26.0   NaN

Tags: 答案文档dfnanmeanmax猎鹰平均值
3条回答

您应该合并在groupby+mean之后创建的数据帧,因为行数不完全匹配:

df = pd.DataFrame({'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'], 'Max Speed': [380., 370., 24., 26.]})
print(df)

means = df.groupby(['Animal'])['Max Speed'].mean()
print(means)

df = pd.merge(df, means, on='Animal', how='left')

print(df)

以下是我的答案:

df2=df.groupby('Animal')["Max Speed"].mean().to_frame(name='Mean').reset_index()
df = df.merge(df2,how='left',on='Animal')

基本上,您可以精确地确定要按哪个列进行分组。然后选择要对其执行操作的列,这里是MaxSpeed。然后,我们将DataFrameGroupby对象转换为dataframe,并指定要创建的新列的名称(groupby操作的结果)。这里的reset_index()没有直接使用,你可以把它取下来。但是,在使用多索引的情况下,为了确保我们将分组的列作为列而不是索引,需要将其重置为具有适当的数据帧

我想你在寻找:

df['mean'] = df.groupby('Animal')['Max Speed'].mean()

这里可能还值得一看变量命名约定:https://www.python.org/dev/peps/pep-0008/

相关问题 更多 >