Pandas与COUNTIFS功能相似

agxfikkp  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(155)

Sample Data
我试图在Python / Pandas中复制COUNTIFS功能,但是我在找到正确的解决方案时遇到了麻烦。
=计数器(B:B,“BD*",A:A,A2,C:C,"〉"与C2)
B是类型列,A是参照列,C是单据条件列,所以只有当类型为“BD”,参照与当前行的参照匹配,单据条件大于当前行的单据条件时,计数才大于零,我希望这有意义吧?
我尝试过使用GroupBy来得到一个解决方案,但我没有得到任何接近我想要的解决方案,我认为我把这个问题弄得过于复杂了。

qnyhuwrf

qnyhuwrf1#

你应该包括你的输入数据作为文本。屏幕截图真的很难处理。
你可以使用numpy broadcasting。但是,这将有一个n^2的计算复杂度,因为你要将每一行与每隔一行进行比较:

reference, type_, doc_condition = df.to_numpy().T
match = (
    (type_[:, None] == "BD")
    & (reference[:, None] == reference)
    & (doc_condition[:, None] < doc_condition)
)
df["COUNTIFS"] = match.sum(axis=1)

在上面的代码片段中,可以将reference[:, None]读作“当前行的Reference值; reference作为“所有行的引用值”。这就是numpy在当前行和所有其他行(包括它自己)之间进行比较的原因。

相关问题