gpt4 book ai didi

Python-按多列分组

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

我有一个列表列表 - 表示一个包含 4 列和许多行 (10000+) 的表。

每个子列表包含 4 个变量。

这是我的表格的一小部分:

['1810569', 'a', 5, '1241.52']
['1437437', 'a', 5, '1123.90']
['1437437', 'b', 5, '1232.43']
['1810569', 'b', 5, '1321.31']
['1810569', 'a', 5, '1993.52']

第一列代表家庭ID,第二列代表家庭中的成员ID。

第四列代表我想要求和的权重 - 分别针对每个成员。

对于上面的示例,我希望输出为:

['1810569', 'a', 5, '3235.04']
['1437437', 'a', 5, '1123.90']
['1437437', 'b', 5, '1232.43']
['1810569', 'b', 5, '1321.31']

换句话说 - 将第 1 行和第 5 行中的权重相加,因为它们是同一用户的权重 - 而所有其他用户都是不同的。

我在 pandas 中看到了一些关于 group by 的内容 - 但我不明白如何准确地使用它来解决我的问题。

最佳答案

假设以下是您的列表,那么以下内容将起作用:

In [192]:
l=[['1810569', 'a', 5, '1241.52'],
['1437437', 'a', 5, '1123.90'],
['1437437', 'b', 5, '1232.43'],
['1810569', 'b', 5, '1321.31'],
['1810569', 'a', 5, '1993.52']]
l

Out[192]:
[['1810569', 'a', 5, '1241.52'],
['1437437', 'a', 5, '1123.90'],
['1437437', 'b', 5, '1232.43'],
['1810569', 'b', 5, '1321.31'],
['1810569', 'a', 5, '1993.52']]

In [201]:
# construct the df and convert the last column to float
df = pd.DataFrame(l, columns=['household ID', 'Member ID', 'some col', 'weights'])
df['weights'] = df['weights'].astype(float)
df

Out[201]:
household ID Member ID some col weights
0 1810569 a 5 1241.52
1 1437437 a 5 1123.90
2 1437437 b 5 1232.43
3 1810569 b 5 1321.31
4 1810569 a 5 1993.52

因此,我们现在可以对家庭和成员 ID 进行groupby,并对“权重”列调用sum:

In [200]:    
df.groupby(['household ID', 'Member ID'])['weights'].sum().reset_index()

Out[200]:
household ID Member ID weights
0 1437437 a 1123.90
1 1437437 b 1232.43
2 1810569 a 3235.04
3 1810569 b 1321.31

关于Python-按多列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456083/

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