根据 ID 和条件计算平均值

这是我的数据框:


       ID  Tell  Number 

0       1   Yes     3   

1       1   Yes     6

2       1   No      9

3       2   Yes     4

4       2   Yes     7

5       2   No      8

6       3   Yes     15

7       3   Yes     8

8       3   No      6

9       3   Yes     13


# Creating the dictionary

dic = {'ID': [1,1,1,2,2,2,3,3,3,3], 'Tell': ['Yes', 'Yes', 'No', 'Yes','Yes', 'No','Yes', 'Yes','No', 'Yes'], 'Number': [3,6,9,4,7,8,15,8,6,13]}


# Creating the dataframe

df = pd.DataFrame(dic)


我想创建第 4 列,为我提供每个 ID 的平均值。仅当 Tell 列为 Yes 时,该行才用于计算平均值。


所以,我的结果 df 应该是这样的:


       ID  Tell  Number mean

0       1   Yes     3    4.5

1       1   Yes     6    4.5

2       1   No      9    4.5

3       2   Yes     4    5.5

4       2   Yes     7    5.5

5       2   No      8    5.5

6       3   Yes     15   12

7       3   Yes     8    12

8       3   No      6    12

9       3   Yes     13   12

我正在考虑对我的 ID 列进行分组,然后检查 Tell 列中是否存在 Yes 或 No。我不确定如何实施。


请帮忙


白猪掌柜的
浏览 79回答 1
1回答

牛魔王的故事

import pandas as pd# Creating the dictionarydic = {'ID': [1,1,1,2,2,2,3,3,3,3], 'Tell': ['Yes', 'Yes', 'No', 'Yes','Yes', 'No','Yes', 'Yes','No', 'Yes'], 'Number': [3,6,9,4,7,8,15,8,6,13]}# Creating the dataframedf = pd.DataFrame(dic)df = (pd.merge(left=df, right=df[df.Tell == 'Yes'].groupby('ID')['Number'].mean(), on='ID')        .rename(columns={'Number_x':'Number', 'Number_y':'mean'}))print(df)印刷:   ID Tell  Number  mean0   1  Yes       3   4.51   1  Yes       6   4.52   1   No       9   4.53   2  Yes       4   5.54   2  Yes       7   5.55   2   No       8   5.56   3  Yes      15  12.07   3  Yes       8  12.08   3   No       6  12.09   3  Yes      13  12.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python