如何提取pandas DataFrame中Nation列按空格分割后的第二部分内容
问题原因
你当前的代码存在两个错误:
split("")是无效写法,空字符串不能作为分割符,按空格分割直接使用split()即可,默认会匹配任意空白字符,还能自动处理多个连续空格的特殊场景- 列表索引从0开始计数,取第二部分需要用索引
[1],你当前写的[0]取的是第一部分内容
修改方案
方案1:调整原apply写法
df['Nation'] = df.Nation.apply(lambda pos: pos.split()[1])
方案2(更推荐):使用pandas矢量化字符串方法
数据量较大时这种方法运行效率远高于apply:
df['Nation'] = df['Nation'].str.split().str[1]
如果存在部分行没有空格、只有单个值的场景,可以用以下写法避免报错,缺失值会自动设为NaN:
df['Nation'] = df['Nation'].str.split(n=1, expand=True)[1]
其中n=1表示最多分割1次,避免字符串内存在多个空格时出现异常。
内容的提问来源于stack exchange,提问作者Roberto
相关产品推荐
相关产品推荐

