我正在根据给定列中的值范围聚合数据框的内容。我的df样子如下所示:
min max names
1 5 ['a','b']
0 5 ['d']
6 8 ['a','c']
3 4 ['e','a']
预期的输出是
- 对于
min=0andmax=5,获取聚合值,因此名称值将是['a','b','d','e','a'] - 对于
min=5andmax=10,获取聚合值,名称值将是['a','d']
任何帮助表示赞赏。
我正在根据给定列中的值范围聚合数据框的内容。我的df样子如下所示:
min max names
1 5 ['a','b']
0 5 ['d']
6 8 ['a','c']
3 4 ['e','a']
预期的输出是
min=0and max=5,获取聚合值,因此名称值将是['a','b','d','e','a']min=5and max=10,获取聚合值,名称值将是['a','d']任何帮助表示赞赏。
最直观的方法是过滤然后聚合。为了解决您的具体问题,我会这样做:
>> 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']