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

合并两个按月分组的DataFrame并计算占比

合并两个按不同日期分组的统计结果并计算占比

现有分组统计代码

你已通过以下代码分别按Data przyjęcia和Data GW字段的月份(yyyy-mm格式)统计了唯一NIP dłużnika的数量:

przyjecia = df.groupby(pd.to_datetime(df['Data przyjęcia']).dt.to_period('M'))['NIP dłużnika'].nunique()
gw = df.groupby(pd.to_datetime(df['Data GW']).dt.to_period('M'))['NIP dłużnika'].nunique()

已知分组结果

  • Data GW分组:
    • 2023-01: 345
    • 2023-02: 234
    • 2023-03: 344
  • Data przyjęcia分组:
    • 2023-01: 1736
    • 2023-02: 1614
    • 2023-03: 1728

解决方案代码

直接合并两个分组结果并计算百分比列:

import pandas as pd

# 若已有przyjecia和gw两个Series,可跳过模拟数据部分
# 模拟分组结果
przyjecia = pd.Series(
    [1736, 1614, 1728],
    index=pd.PeriodIndex(['2023-01', '2023-02', '2023-03'], freq='M'),
    name='Data przyjęcia统计数'
)
gw = pd.Series(
    [345, 234, 344],
    index=pd.PeriodIndex(['2023-01', '2023-02', '2023-03'], freq='M'),
    name='Data GW统计数'
)

# 按日期索引合并,重置索引将日期转为列
merged_df = pd.concat([przyjecia, gw], axis=1).reset_index(names='日期')

# 计算百分比(保留两位小数)
merged_df['Data GW统计数/Data przyjęcia统计数的百分比'] = (
    merged_df['Data GW统计数'] / merged_df['Data przyjęcia统计数'] * 100
).round(2)

# 查看结果
print(merged_df)

最终输出表格

日期Data przyjęcia统计数Data GW统计数Data GW统计数/Data przyjęcia统计数的百分比
2023-01173634519.87
2023-02161423414.50
2023-03172834419.91

补充说明

  • 如果某月份仅存在其中一组数据,合并后对应位置会出现NaN,可添加fillna(0)处理:merged_df = pd.concat([przyjecia, gw], axis=1).fillna(0).reset_index(names='日期')
  • 若需将日期转为字符串格式,执行:merged_df['日期'] = merged_df['日期'].astype(str)

内容的提问来源于stack exchange,提问作者Grzegorz Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:00:09