无分隔符列值拆分新列时遇KeyError:0L问题求助
无分隔符列值拆分独立列的解决方案
固定长度值的拆分方法
如果你的列中每个值的长度固定(比如每个数值都是固定位数的数字),直接用字符串操作就能快速拆分:
方式一:字符串转列表拆分
先确保列是字符串类型(数值类型需先转换),再通过apply将每个字符拆分为独立列:
import pandas as pd # 示例数据 df = pd.DataFrame({'target_col': [1234, 5678, 9012]}) # 数值转字符串 df['target_col'] = df['target_col'].astype(str) # 拆分每个字符到新列 df[['col1', 'col2', 'col3', 'col4']] = df['target_col'].apply(lambda x: pd.Series(list(x)))
方式二:正则提取固定位置字符
用str.extract配合正则表达式,精准提取每个位置的字符:
df[['col1', 'col2', 'col3', 'col4']] = df['target_col'].str.extract(r'(.)(.)(.)(.)', expand=True)
变长值的拆分方法
如果列中值的长度不一致,先统一补全到最长长度(比如补0),再拆分:
# 获取最长值的长度 max_length = df['target_col'].astype(str).str.len().max() # 补全到最长长度 df['padded_col'] = df['target_col'].astype(str).str.zfill(max_length) # 循环拆分每一位 for idx in range(max_length): df[f'col{idx+1}'] = df['padded_col'].str[idx]
解决KeyError: 0L问题
这个错误是因为你尝试访问DataFrame中不存在的列索引0(比如误写df[0])。先通过以下代码确认当前列名:
print(df.columns)
确保所有操作都针对正确的列名,避免直接用数字索引访问列(除非列名本身是数字)。
内容的提问来源于stack exchange,提问作者Nia Jackson
相关产品推荐
相关产品推荐

