亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據 ID 和條件計算平均值

根據 ID 和條件計算平均值

白豬掌柜的 2023-01-04 13:36:06
這是我的數據框:       ID  Tell  Number 0       1   Yes     3   1       1   Yes     62       1   No      93       2   Yes     44       2   Yes     75       2   No      86       3   Yes     157       3   Yes     88       3   No      69       3   Yes     13# 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)我想創建第 4 列,為我提供每個 ID 的平均值。僅當 Tell 列為 Yes 時,該行才用于計算平均值。所以,我的結果 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   127       3   Yes     8    128       3   No      6    129       3   Yes     13   12我正在考慮對我的 ID 列進行分組,然后檢查 Tell 列中是否存在 Yes 或 No。我不確定如何實施。請幫忙
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

import pandas as pd


# 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)


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  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.0

7   3  Yes       8  12.0

8   3   No       6  12.0

9   3  Yes      13  12.0


查看完整回答
反對 回復 2023-01-04
  • 1 回答
  • 0 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號