gpt4 book ai didi

python - Pandas ,在遍历分组数据中的行时使用生成的值

转载 作者:行者123 更新时间:2023-11-28 18:23:02 26 4
gpt4 key购买 nike

我对 Pandas 和一般编程还很陌生,但直到现在我一直能够通过谷歌找到任何问题的答案。很抱歉这个描述性不强的问题,希望有人能提出更清楚的问题。

我正在尝试将数据组合在一起,对该数据执行函数,更新列,然后在下一组数据中使用该列中的数据。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.random(9),columns=['A'])
df['B'] = [1,1,1,2,2,3,3,3,3]
df['C'] = np.nan
df['D'] = np.nan
df.loc[0:2,'C'] = 500

给我

    A           B   C       D
0 0.825828 1 500.0 NaN
1 0.218618 1 500.0 NaN
2 0.902476 1 500.0 NaN
3 0.452525 2 NaN NaN
4 0.513505 2 NaN NaN
5 0.089975 3 NaN NaN
6 0.282479 3 NaN NaN
7 0.774286 3 NaN NaN
8 0.408501 3 NaN NaN

C 列中的 500 是初始条件。我想按B列对数据进行分组,并对第一组执行以下功能

def function1(row):
return row['A']*row['C']/6

给我

    A           B   C       D
0 0.825828 1 500.0 68.818971
1 0.218618 1 500.0 18.218145
2 0.902476 1 500.0 75.206313
3 0.452525 2 NaN NaN
4 0.513505 2 NaN NaN
5 0.089975 3 NaN NaN
6 0.282479 3 NaN NaN
7 0.774286 3 NaN NaN
8 0.408501 3 NaN NaN

然后我想将 D 中的前三个值相加,并将它们与 C 中的最后一个值相加,并使该值成为第 2 组值

    A           B   C           D
0 0.825828 1 500.000000 68.818971
1 0.218618 1 500.000000 18.218145
2 0.902476 1 500.000000 75.206313
3 0.452525 2 662.243429 NaN
4 0.513505 2 662.243429 NaN
5 0.089975 3 NaN NaN
6 0.282479 3 NaN NaN
7 0.774286 3 NaN NaN
8 0.408501 3 NaN NaN

然后我在第 2 组上执行 function1 并重复直到结束

    A           B   C           D
0 0.825828 1 500.000000 68.818971
1 0.218618 1 500.000000 18.218145
2 0.902476 1 500.000000 75.206313
3 0.452525 2 662.243429 49.946896
4 0.513505 2 662.243429 56.677505
5 0.089975 3 768.867830 11.529874
6 0.282479 3 768.867830 36.198113
7 0.774286 3 768.867830 99.220591
8 0.408501 3 768.867830 52.347246

数据框将包含数百行。我一直在尝试各种 groupby,应用组合,但我完全被难住了。

谢谢

最佳答案

解决方法:

df['D'] = df['A'] * df['C']/6

for i in df['B'].unique()[1:]:
df.loc[df['B']==i, 'C'] = df['D'].sum()
df.loc[df['B']==i, 'D'] = df['A'] * df['C']/6

关于python - Pandas ,在遍历分组数据中的行时使用生成的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541033/

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