You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:05:23