如何将带末尾斜杠的DataFrame多值观测拆分为新行
处理DataFrame中带斜杠的多值观测值拆分问题
我来帮你搞定这个需求!针对这种单个单元格包含多个用斜杠分隔(且末尾都带斜杠)的数值,我们可以用Pandas的工具轻松实现拆分并展开成单独行,下面一步步来演示:
1. 先模拟你的示例数据
首先我们先构造一个和你描述一致的DataFrame,方便后续操作演示:
import pandas as pd # 模拟原始数据 df = pd.DataFrame({ 'ID': [1, 2, 3], 'Target_Column': ['OneThing/', 'OneThing/AnotherThing/', 'ThirdThing/'], 'Other_Column': ['A', 'B', 'C'] })
原始DataFrame长这样:
ID Target_Column Other_Column
0 1 OneThing/ A
1 2 OneThing/AnotherThing/ B
2 3 ThirdThing/ C
2. 处理带斜杠的列并拆分
关键步骤分为两步:
- 先把每个单元格的字符串按斜杠
/分割,同时过滤掉末尾斜杠带来的空字符串 - 用
explode方法把列表格式的内容展开成单独行
代码实现如下:
# 1. 分割字符串并过滤空值:末尾的斜杠会导致分割出空元素,所以要去掉 df['Target_Column'] = df['Target_Column'].str.split('/').apply(lambda x: [item for item in x if item]) # 2. 展开列表为单独行 result_df = df.explode('Target_Column', ignore_index=True)
处理后的结果就变成了:
ID Target_Column Other_Column
0 1 OneThing A
1 2 OneThing B
2 2 AnotherThing B
3 3 ThirdThing C
3. 如果有多个需要拆分的列怎么办?
要是你的DataFrame里有多个类似的带斜杠的列,我们可以循环处理每一个目标列:
# 假设需要拆分的列列表 columns_to_explode = ['Col1', 'Col2', 'Col3'] for col in columns_to_explode: df[col] = df[col].str.split('/').apply(lambda x: [item for item in x if item]) df = df.explode(col, ignore_index=True)
这样就能批量处理所有需要拆分的列啦!
内容的提问来源于stack exchange,提问作者REFER
相关产品推荐
相关产品推荐

