我需要找到满足多个条件的所有行组合。 我尝试通过添加多个条件来使用itertools中的powerset配方和答案here,但似乎无法使这些条件正常工作。 我想出的代码是:
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
df_groups = pd.concat(
[data.reindex(l).assign(Group = n) for n, l in
enumerate(powerset(data.index)) ])
if ((data.loc[l, 'Account'] == 'COS').any() & (data.loc[l,'Amount'].sum() >= 100)
& (data.loc[l,'Account'] == 'Rev').any() & (data.loc[l, 'Amount'].sum() >= 150)
& (data.loc[l,'Account'] == 'Inv').any() and (data.loc[l, 'Amount'].sum() >= 60)))] )
我上面要尝试做的只是找到满足/超过以下阈值的那些组合:
Account Amount COS 150 Rev 100 Inv 60
样本数据:
Entity Account Amount Location A10 Rev 60 A B01 Rev 90 B C11 Rev 80 C B01 COS 90 B C11 COS 80 C A10 Inv 60 A
为可怜的问题写作礼节提前道歉,这是我第一次无法在Stackoverflow上找到答案,不得不问一个问题。
另外,请注意,随着len(data)的增加,这将变得非常缓慢,因此对此方面的任何建议也将受到极大的赞赏。