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

如何用同CustomerNr的非空Costs值填充DataFrame空单元格?

用同一客户编号的非空值填充DataFrame中Costs列的空单元格

解决方案代码

import pandas as pd

# 初始化示例数据
df1 = pd.DataFrame([[1004,''], [1004, 'D'],[1005, 'C'], 
                   [1010,'A'], [1010,''],[1010,''],[1010,''],[1004, '']], columns=['CustomerNr','Costs'])

# 把Costs列的空字符串转换为pandas可识别的缺失值
df1['Costs'] = df1['Costs'].replace('', pd.NA)

# 按客户编号分组,用组内的非空值填充所有空单元格
df1['Costs'] = df1.groupby('CustomerNr')['Costs'].transform(lambda x: x.ffill().bfill())

# 查看结果
print(df1)

步骤说明

  1. 转换空字符串为缺失值:原数据中的空单元格是字符串'',pandas的填充方法无法直接识别,所以先替换为pd.NA。
  2. 分组填充:通过groupby('CustomerNr')将数据按客户编号分组,再用transform对每个组单独处理:
    • ffill()会向前填充缺失值,bfill()会向后填充缺失值,两者结合可以确保不管非空值在组内的哪个位置,整个组的缺失值都会被该组的非空值覆盖。

最终输出

CustomerNrCosts
1004D
1004D
1005C
1010A
1010A
1010A
1010A
1004D

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:57:55