gpt4 book ai didi

python - Pandas 在子循环中将新列添加回主数据框

转载 作者:行者123 更新时间:2023-12-01 08:48:54 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

 ids    value   
1 0.1
1 0.2
1 0.14
2 0.22
....

我正在尝试循环遍历每个 id 并计算每个 id 的新列。

for id, row in df.groupby('ids'):
x = row.loc[0, 'value']

for i in range (len(row)):
row.loc[i, 'new_col_1'] = i * x
row.loc[i, 'new_col_2'] = i * x * 10

我的目标是将每个 id 的 2 个新列添加回原始数据帧,因此我的 df 将如下所示:

 ids    value    new_col_1     new_col_2
1 0.1 0 0
1 0.2 0.2 2
1 0.14 0.28 2.8
2 0.22 0 0
....

最佳答案

累计计数

加入一点 Numpy 广播。

  • cumcount 为您获取 for i in range(len(df))

    df.groupby('ids').cumcount()

    0 0
    1 1
    2 2
    3 0
    dtype: int64
<小时/>
c = df.groupby('ids').cumcount()
v = df.value

df.join(
pd.DataFrame(
(c.values * v.values)[:, None] * [1, 10],
df.index,
).rename(columns=lambda x: f"new_col_{x + 1}")
)

ids value new_col_1 new_col_2
0 1 0.10 0.00 0.0
1 1 0.20 0.20 2.0
2 1 0.14 0.28 2.8
3 2 0.22 0.00 0.0

关于python - Pandas 在子循环中将新列添加回主数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53214342/

25 4 0