如何将Pandas DataFrame中含空格的字符串行拆分为多行并保留nan值
实现代码
import pandas as pd import numpy as np # 构造示例数据,替换为你自己的DataFrame即可 df = pd.DataFrame({ 'output': ['Ohio State', np.nan, np.nan, 'New York City', np.nan, np.nan, np.nan] }) # 核心处理逻辑 df['output'] = df['output'].apply(lambda x: x.split() if pd.notna(x) else [x]) df = df.explode('output', ignore_index=True) # 输出验证 print(df)
执行后输出结果和你期望的格式完全一致:
output 0 Ohio 1 State 2 NaN 3 NaN 4 New 5 York 6 City 7 NaN 8 NaN 9 NaN
逻辑说明
- 先用
apply逐行处理output列:非空值按空格拆分为单词列表,空值包装为仅包含自身的列表,保证空行不会在后续操作中丢失 - 再用
explode方法将列表类型的单元格展开为独立行,ignore_index=True会自动重置行索引,避免索引重复报错 - 如果你需要保留原表的其他列,该方法也适用,展开后其他列的值会自动对应复制到新增的行上
你之前考虑的新增标记列的方案也可以实现,不过上述写法更简洁,无需额外新增列即可完成需求。
内容的提问来源于stack exchange,提问作者PRABHAV GUPTA
相关产品推荐
相关产品推荐

