基于熊猫另一列中值的范围的一列总内容

问题描述 投票:2回答:1

我正在根据给定列中值的范围来汇总数据框的内容。我的df如下所示:

min max names
1   5   ['a','b']
0   5   ['d']
6   8   ['a','c']
3   4   ['e','a']

期望的输出是

  • 对于min=0max=5,获取汇总值,因此名称值为['a','b','d','e','a']
  • 对于min=5max=10,获取汇总值,名称值将为['a','d']

感谢您的任何帮助。

python python-3.x pandas aggregate pandas-groupby
1个回答
4
投票
最直观的方法是过滤,然后聚合。为了解决您的特定问题,我会这样做:

>> df = pd.DataFrame({"min": [1, 0, 6, 3], "max": [5, 5, 8, 4], "value": [['a','b'], ['d'], ['a','c'], ['e','a']]}) >> print(df) min max value 0 1 5 [a, b] 1 0 5 [d] 2 6 8 [a, c] 3 3 4 [e, a] >> sum_filtered_values = df[(df["max"]<=5) & (df["min"]>=0)].value.sum() >> print(sum_filtered_values) ['a', 'b', 'd', 'e', 'a'] >> sum_filtered_values = df[(df["max"]<=10) & (df["min"]>=5)].value.sum() >> print(sum_filtered_values) ['a', 'c']

© www.soinside.com 2019 - 2024. All rights reserved.