python 中所有行的 SUMIF

发布于 2025-01-10 19:25:01 字数 2245 浏览 1 评论 0原文

我正在尝试通过创建一个名为 SumifsZ 的新列来复制 Excel 中的 Python 中的 SUMIF。 SumifsZ 是我在 python 中需要的所需输出。

SumifsZ 列第一行中的公式是 =SUMIFS(C:C,B:B,"Z",A:A,A2) ,我需要将其复制到第三、第四行......等

地区数量SumifZ
AX313
AZ313
BZ99
BX29
CY50
AZ1013
DZ1120
DZ920
EY60
FZ77

我使用的代码是 Data['SumifsZ'] = Data.query('Region ==="Z"').QTY.sum()

和 i我没有得到与 excel 相同的结果。请帮忙!

I am trying to replicate SUMIFs in Python that I have in my excel by creating a new column called SumifsZ. SumifsZ is the desired output i would need in python.

my formula in first row of SumifsZ column is =SUMIFS(C:C,B:B,"Z",A:A,A2) , i would need that to be replicated in 3rd,4th rows.... etc.

ProductRegionQTYSumifZ
AX313
AZ313
BZ99
BX29
CY50
AZ1013
DZ1120
DZ920
EY60
FZ77

the code i am using is Data['SumifsZ'] = Data.query('Region =="Z"').QTY.sum()

and i am not getting the same result as excel. please help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽清梦 2025-01-17 19:25:01

已编辑:


您可以通过使用 loc 对数据框进行切片并在“Product”上使用 groupby 来解决此问题。可以将其转换为 dict 并通过 apply 在 lambda 函数中使用,如下所示:

Data = pd.DataFrame({"Product":["A", "A", "B", "B", "C", "A", "D", "D", "E", "F"],
                    "Region":["X", "Z", "Z", "X", "Y", "Z", "Z", "Z", "Y", "Z"],
                    "QTY":[3, 3, 9, 2, 5, 10, 11, 9, 6, 7]})


Zmap = Data.loc[Data.Region=='Z',:].groupby('Product').sum().to_dict()['QTY']

Data.loc[:,'SumifZ'] = Data.Product.apply(lambda x: Zmap[x] if x in Zmap.keys() else 0)

结果:

    Product Region  QTY SumifZ
0   A   X   3   13
1   A   Z   3   13
2   B   Z   9   9
3   B   X   2   9
4   C   Y   5   0
5   A   Z   10  13
6   D   Z   11  20
7   D   Z   9   20
8   E   Y   6   0
9   F   Z   7   7


文档:

Edited:


You can approach this problem by slicing the data frame with loc and using groupby on "Product". This can be converted to a dict and used in a lambda function via apply as follows:

Data = pd.DataFrame({"Product":["A", "A", "B", "B", "C", "A", "D", "D", "E", "F"],
                    "Region":["X", "Z", "Z", "X", "Y", "Z", "Z", "Z", "Y", "Z"],
                    "QTY":[3, 3, 9, 2, 5, 10, 11, 9, 6, 7]})


Zmap = Data.loc[Data.Region=='Z',:].groupby('Product').sum().to_dict()['QTY']

Data.loc[:,'SumifZ'] = Data.Product.apply(lambda x: Zmap[x] if x in Zmap.keys() else 0)

Result:

    Product Region  QTY SumifZ
0   A   X   3   13
1   A   Z   3   13
2   B   Z   9   9
3   B   X   2   9
4   C   Y   5   0
5   A   Z   10  13
6   D   Z   11  20
7   D   Z   9   20
8   E   Y   6   0
9   F   Z   7   7


Docs:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文