gpt4 book ai didi

python - 在数据框中添加一列,对现有列的不同行执行不同的操作

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:28 24 4
gpt4 key购买 nike

FOOD_ID   SAMPLE_NO   ELEMENT1   ELEMENT2   ELEMENT3
F110 A1 0.4 0.2 0.1
F110 A2 0.6 0.1 0.3
F110 B1 0.4 0.3 0.7
F110 B2 0.5 0.6 0.9
F110 C1 0.5 0.3 0.4
F110 C2 0.6 0.2 0.6
F110 C3 0.1 0.1 0.5
F120 B1 0.4 0.2 0.2
F120 B2 0.5 0.2 0.5
F120 B3 0.7 0.3 0.8
F120 B4 0.7 0.7 0.9
F120 B5 0.2 0.9 0.1

我的数据如上所示。我想添加列来给出食物 id 的元素 1、2、3 的平均值。如果样本 C 可用,则平均值将只是 C 样本的平均值,如果 C 样本不存在,则平均值将只是 B 样本的最新平均值。

对于食品 f110 C sample ,这就是为什么平均值将是 C sample 的平均值。对于食品 f120 C 样本不存在,这就是为什么平均值将是 B 样本 B5 的最新值。

我最终想要的数据框如下所示......

FOOD_ID   ELEMENT1_AVG          ELEMENT2_AVG       ELEMENT3_AVG
F110 (0.5+0.6+0.1)/3=0.4 (0.3+0.2+0.1)=0.2 (0.4+0.6+0.5)=0.5
F120 0.2 0.9 0.1

需要帮助。提前致谢。

最佳答案

def function1(dd:pd.DataFrame):
return dd.query("SAMPLE_NO.str.contains('C')").mean() if len(dd.query("SAMPLE_NO.str.contains('C')"))>0 else dd.query("SAMPLE_NO.str.contains('B')").iloc[-1,2:]

df1.groupby('FOOD_ID').apply(function1).rename(columns=lambda ss:f'{ss}_AVG')

ELEMENT1_AVG ELEMENT2_AVG ELEMENT3_AVG
FOOD_ID
F110 0.4 0.2 0.5
F120 0.2 0.9 0.1

关于python - 在数据框中添加一列,对现有列的不同行执行不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745642/

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