如何在Pandas中动态拆分单元格前3个值到新列并保留原列?
Pandas动态拆分逗号分隔值至新列(保留原列)
实现代码
import pandas as pd # 创建示例数据 data = { 'Phone Number': [ '233,234,235,236,237,223', '214,226,290', '230,231' ] } df = pd.DataFrame(data) # 将原列按逗号分割为列表,方便后续取值 df['split_numbers'] = df['Phone Number'].str.split(',') # 循环创建3个新列,提取前3个值 for i in range(1, 4): # 取分割后列表的对应位置元素,长度不足时返回空值 df[f'Phone Number {i}'] = df['split_numbers'].apply(lambda x: x[i-1] if len(x) >= i else '') # 移除临时辅助列 df = df.drop('split_numbers', axis=1) # 查看最终结果 print(df)
代码说明
- 先把
Phone Number列的字符串按逗号拆分存为列表,用临时列split_numbers中转,方便按索引取值 - 通过for循环动态生成
Phone Number 1到Phone Number 3三个新列:- 用
apply遍历每个列表,判断长度是否足够取对应位置的值,不足则填充空字符串(也可替换为None)
- 用
- 最后删除临时辅助列,保留原列和新生成的三列
输出结果
| Phone Number | Phone Number 1 | Phone Number 2 | Phone Number 3 |
|---|---|---|---|
| 233,234,235,236,237,223 | 233 | 234 | 235 |
| 214,226,290 | 214 | 226 | 290 |
| 230,231 | 230 | 231 |
内容的提问来源于stack exchange,提问作者Salem Shehabeddin
相关产品推荐
相关产品推荐

