簡體   English   中英

嘗試在 Excel 中編寫等效於 SUMIF 功能的 Python

[英]Trying to code a Python equivalent of SUMIFs feature in Excel

我正在嘗試使用 Python 從頭開始重寫 a.xlsx 文件。 excel 表有 99 行和 11 列。 我已經生成了 99 行 x 8 列,我目前正在生成 99 行 x 第 9 列。 第 9 列是根據 excel 中的 SUM-IFS 公式計算的。 它考慮了第 2、4 和 7 列。

第 2 列具有數值 int 值。 第 4 列具有三個字母的機場代碼值,例如紐約市的 NYC 第 7 列也具有三個字母的機場代碼值,例如德里的 DEL。

第 9 列單元格的 sum-if 公式SUMIFS(B:B, D:D, D2, G:G, G2)

因此,它將第 2 列中對應城市的數值相加。 4和col。 7.如果col中的一對城市只出現一次。 4和col。 7 然后沒有什么可以求和,col.9 中的單元格 = col 中單元格的 int 值。 2 但是,如果在 col 中多次出現這對城市。 4和col。 7 然后是 col 中的相應值。 2 被求和,這成為 col 中單元格的值。 9

例子:

在此處輸入圖像描述

在這個例子中,上校。 2 是銷售,col.4 是起源城市,col。 7 是目的地城市和上校。 圖9是利用=SUMIFS(B:B,C:C,C2,D:D,D2)的結果

我正在嘗試在我擁有的大型數據集上使用 python 計算第 9 列。 現在,我已經能夠創建一個字典列表,其中我將鍵設置為 origin_city-destination_city,並將值設置為 col 的 integer 值。 2.字典列表有99行,如excel文件,因此excel文件的每一行都表示為一個字典。 在打印字典時,它是這樣的:

{'YTO-YVR': 570}
{'YVR-YTO': 542}
{'YTO-YYC': 420}
{'YYT-YTO': 32}
{'YWG-YYC': 115}

我一直在考慮是否可以遍歷字典列表並創建它的 SUMIFS 版本 --- 導致列表中有 99 個字典,每個字典都有 sumif 值。 在此之后,我必須將所有這些值寫入 excel 文件中的列。

我希望這里有人可以提供幫助:! 非常感謝你:)

您可以將 pandas 的groupbytransform一起使用:

import pandas as pd
df = pd.DataFrame({'Sales': [100,110,200,300,150,200,100],
                   'Origin': ['YYZ','YEA','CDG','YYZ','YEA','YVR','YEA'],
                   'Dest': ['DEL','NYC','YUL','DEL','YTO','HKG','NYC']})

df['Result'] = df.groupby(['Origin','Dest']).Sales.transform('sum')

結果:

   Sales Origin Dest  Result
0    100    YYZ  DEL     400
1    110    YEA  NYC     210
2    200    CDG  YUL     200
3    300    YYZ  DEL     400
4    150    YEA  YTO     150
5    200    YVR  HKG     200
6    100    YEA  NYC     210

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM