gpt4 book ai didi

python - 根据条件(分组)在 Pandas 中添加行

转载 作者:行者123 更新时间:2023-12-05 01:59:57 24 4
gpt4 key购买 nike

我已经用谷歌搜索了很多关于这个的问题,但找不到适用于我的问题的答案。我遇到的问题是我有一个数据框,每一行都有一个变量,我想连续插入带有变量 C 的行,这是变量 A + B 的值。示例:

      TOWN        YEAR           Var     Value                 
Amsterdam 2019 A 1
Amsterdam 2019 B 2
Amsterdam 2020 A 1
Amsterdam 2020 B 3
Rotterdam 2019 A 4
Rotterdam 2019 B 4
Rotterdam 2020 A 5
Rotterdam 2020 B 2

所需的输出将插入一行,并对其他列中相同的行分别求和 A 和 B。我现在的尝试适得其反,因为我使用了 groupby 和 sum,然后将其转换为列表,然后尝试将其作为单独的列 (var_C) 附加。它适得其反的原因是因为我必须复制每个值以匹配原始数据集的长度。最终列表的长度与原始数据集的长度不匹配。

data_current = data[data['var'].isin(['A', 'B'])]
data_var_c = data_current.groupby(['TOWN', 'year'])['value'].sum()
values = data_var_c.tolist()
values_dup = [val for val in values for _ in (0, 1)]
len(values_dup)

如有任何反馈,我们将不胜感激!

最佳答案

您可以使用groupbypd.concat:

result = (
pd.concat([
df,
df.groupby(['TOWN', 'YEAR'], as_index=False)
.agg(sum)
.assign(Var = 'C')
])
)

result = result.sort_values(['TOWN', 'YEAR', 'Var'])

输出:

       TOWN  YEAR Var  Value
0 Amsterdam 2019 A 1
1 Amsterdam 2019 B 2
0 Amsterdam 2019 C 3
2 Amsterdam 2020 A 1
3 Amsterdam 2020 B 3
1 Amsterdam 2020 C 4
4 Rotterdam 2019 A 4
5 Rotterdam 2019 B 4
2 Rotterdam 2019 C 8
6 Rotterdam 2020 A 5
7 Rotterdam 2020 B 2
3 Rotterdam 2020 C 7

关于python - 根据条件(分组)在 Pandas 中添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67576842/

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