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

如何在Pandas中合并含空值的boxes与pallets列并拆分?

解决Pandas合并列并拆分的空值处理问题

原始数据集

| order | point | city | boxes | pallets |
|--| -- | -- | -- | -- |
| o12345 | 1 | X |b0|p0,p1|
|o12345|2|Y|-|p2,p3,p4|
|o12345|3|Z|b1|-|
|o34567|1|Q|-|-|
|o34567|2|W|b2,b3|p5,p6|
|o34567|3|E|-|p7|
|o34567|4|R|b4,b5|p8,p9,p10|

需求与问题

需要合并boxes和pallets列为cargo列,再将cargo拆分为每行一个值。原代码直接用+拼接会因为空值(表格中的-)导致结果异常,比如出现,b0或者p2,p3,p4,这类多余逗号的情况。

解决方案

步骤1:读取数据并替换空标记

先把表格中的-替换为空字符串,避免拼接时产生多余逗号:

import pandas as pd

# 读取Excel文件(实际使用时替换为你的文件路径)
df = pd.read_excel('example.xlsx')

# 将'-'替换为空字符串
df[['boxes', 'pallets']] = df[['boxes', 'pallets']].replace('-', '')

步骤2:合并列生成cargo

使用str.cat方法拼接,自动忽略空值,避免多余逗号:

# 合并boxes和pallets,用逗号分隔,空值不参与拼接
df['cargo'] = df['pallets'].str.cat(df['boxes'], sep=',', na_rep='')
# 清理首尾可能的逗号,空字符串转为NA
df['cargo'] = df['cargo'].str.strip(',').replace('', pd.NA)

步骤3:拆分cargo为每行一个值

用str.split结合explode方法拆分,空值保持原样:

# 拆分cargo列并展开为多行
result = df.assign(cargo=df['cargo'].str.split(',')).explode('cargo', ignore_index=True)

# 可选:如果需要移除cargo为空的行,取消下面注释
# result = result.dropna(subset=['cargo'])

print(result)

最终结果

执行后会得到每行对应一个货物的表格,示例输出如下:

order  point city boxes     pallets cargo
0   o12345      1    X    b0      p0,p1    p0
1   o12345      1    X    b0      p0,p1    p1
2   o12345      1    X    b0      p0,p1    b0
3   o12345      2    Y         p2,p3,p4    p2
4   o12345      2    Y         p2,p3,p4    p3
5   o12345      2    Y         p2,p3,p4    p4
6   o12345      3    Z    b1                b1
7   o34567      1    Q                         
8   o34567      2    W  b2,b3      p5,p6    p5
9   o34567      2    W  b2,b3      p5,p6    p6
10  o34567      2    W  b2,b3      p5,p6    b2
11  o34567      2    W  b2,b3      p5,p6    b3
12  o34567      3    E                p7    p7
13  o34567      4    R  b4,b5  p8,p9,p10    p8
14  o34567      4    R  b4,b5  p8,p9,p10    p9
15  o34567      4    R  b4,b5  p8,p9,p10   p10
16  o34567      4    R  b4,b5  p8,p9,p10    b4
17  o34567      4    R  b4,b5  p8,p9,p10    b5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:20:47