【发布时间】:2017-04-02 17:38:08
【问题描述】:
我想我在 pandas 中以一种倒退的方式来处理这一切。这是一个示例数据框:
Group rstart rend qty
1 10000 11000 1000
1 10000 11000 8000
1 10000 11000 13000
1 10000 11000 1000
2 6000 8000 4000
2 6000 8000 9000
2 6000 8000 3000
最后,我试图确定组内介于范围之间的数量或数量组合,并将标志放在新列中(如果可能的话,也将组合保存在新列中)。
这是我到目前为止所做的以及我遇到问题的地方 - 自从我不熟悉这种语言以来,我一直在尝试各种不同的方式。
import pandas as pd
import numpy as np
import itertools
df = pd.read_csv('test.csv')
d = df[['group','qty']]
s = d.groupby('group')['qty'].apply(list).to_dict()
comb = list(map(dict,itertools.combinations(s.items(),2)))
我尝试的comb stmt 和多种变体只是打印字典。将 2 用于两个变体以对其进行测试但不起作用 - 这必须根据列表中值的数量进行调整。
我引入了数据集,然后想最好为每个分组和数量创建一个包含列表的字典,以便在单独的表中创建所有组合。一旦我有了每个值的组合和总和 - 链接回主数据框以与总数和标志进行比较。
我在创建与组关联的数量的每个组合并求和时遇到了问题。如果存储在所有字典的列表中,我可以执行它,但我需要按组分组。例如,第 1 组应该有 1000,8000 和 1000,13000 和 1000,1000 和 1000,8000,13000 等等。组合的数量可能因组而异。
任何人都可以帮助指导我正确的方向吗?也许我的想法是关于如何去做。
谢谢
【问题讨论】:
-
我不明白你的要求。比如为什么1000、13000、1000在10000-11000范围内?
-
单独看时它们不是 - 我试图弄清楚该组内的数量或数量组合是否在该范围内。在该组中,应确定 1000,8000 和 1000,因为它们的总和在该范围内。
标签: python pandas dictionary combinations