如何用Python Pandas实现Power BI中SUMMARIZE-CALCULATE-SUM等效逻辑?
Pandas实现类似Power BI的分组汇总逻辑问题
我是Python Pandas新手,目前遇到了无法独立解决的问题。我通过ODBC连接SQL获取了如下DataFrame:
JDFEC JDCPY JDTMP PALLETS_STOCK 0 2021-06-30 164 N 1256.0 1 2022-01-27 704 N 1.0 2 2021-03-14 799 N 376.0 3 2022-01-14 723 N 1402.0 4 2022-05-19 776 N 1902.0 ... ... ... ... ... 101417 2022-10-12 714 N 220.0 101418 2020-09-14 153 N 315.0 101419 2021-05-08 109 I 66.0 101420 2022-10-14 057 N 48.0 101421 2022-04-27 776 I 1820.0
我希望对其进行处理,按日期分组,根据JDCPY和JDTMP的值分组并汇总PALLETS_STOCK。我已在Power BI中通过以下SUMMARIZE-CALCULATE-SUM逻辑实现:
NewTable = SUMMARIZE( Query, Query[JDFEC], "GROUP-A", CALCULATE(SUM(Query[PALLETS_STOCKS], QueryKeynes[JDCPY] = "539" || QueryKeynes[JDCPY] = "109"), "GROUP-B", CALCULATE(SUM(Query[PALLETS_STOCKS], QueryKeynes[JDCPY] = "455", QueryKeynes[JDTMP] = "N"), etc... )
但我不知道如何在Python中实现该逻辑,能否请人指导我?
编辑:最终解决代码
import pandas as pd import numpy as np conditions = [ df["JDCPY"].isin(["003", '006']), (df["JDCPY"].eq("022")) & (df["JDTMP"].eq("N")) ] groups = ["GROUP-A","GROUP-B"] out = ( df .assign(JDFEC= pd.to_datetime(df["JDFEC"]), GROUPS= np.select(conditions, groups, default="GROUP-X")) .groupby(["JDFEC", "GROUPS"], as_index=False)["PALLETS_STOCK"].sum() .pivot_table(index= "JDFEC", columns="GROUPS", values="PALLETS_STOCK") .reset_index() .rename_axis(None, axis=1) ) out.sort_values(by=["JDFEC"], inplace=True) out["JDFEC"] = pd.to_datetime(out["JDFEC"]).dt.strftime("%d/%m/%Y") print(out)
内容的提问来源于stack exchange,提问作者Foguete
相关产品推荐
相关产品推荐

