如何对DataFrame中空格分隔的列表列执行explode操作?
处理pandas中空格分隔字符串列的explode操作
不需要先转成逗号分隔,直接把空格分隔的字符串转为列表后就能执行explode,步骤如下:
1. 将空格分隔字符串转为列表
用pandas的str.split()方法,默认按任意数量的空格分割(包括连续空格、制表符等),直接把字符串转成列表格式:
df['cited_docdb_ls'] = df['cited_docdb_ls'].str.split()
如果需要严格按单个空格分割(不合并连续空格),可以指定参数pat=' ',但一般默认行为更实用。
2. 执行explode操作
对转换后的列表列直接调用explode():
df_exploded = df.explode('cited_docdb_ls', ignore_index=True)
ignore_index=True会重置结果的索引,避免重复索引;- 如果原列存在空值或空字符串,
str.split()会返回NaN或空列表,explode时可以通过dropna=True过滤掉这些空条目:
df_exploded = df.explode('cited_docdb_ls', ignore_index=True, dropna=True)
完整示例
import pandas as pd # 构造示例DataFrame data = { 'id': [1, 2], 'cited_docdb_ls': ['DOC1 DOC2 DOC3', 'DOC4 DOC5'] } df = pd.DataFrame(data) # 转换为列表 df['cited_docdb_ls'] = df['cited_docdb_ls'].str.split() # 执行explode df_exploded = df.explode('cited_docdb_ls', ignore_index=True) print(df_exploded)
输出结果:
id cited_docdb_ls 0 1 DOC1 1 1 DOC2 2 1 DOC3 3 2 DOC4 4 2 DOC5
内容的提问来源于stack exchange,提问作者Lusian
相关产品推荐
相关产品推荐

