为什么Pandas调用split函数时提示'n'是无效关键字参数?
错误原因
你混淆了两种完全不同的split方法的参数规则:
- 你参考的文档是
pandas.Series.str.split的说明,该方法的拆分次数参数名为n - 你通过
df.loc[28,'name']取到的是单个Python原生字符串值,调用的是Python内置str类型的split方法,该方法的拆分次数参数名为maxsplit,根本不存在n参数,因此触发参数无效报错。
你之前不传参数时能正常运行,是因为两种split方法无参数调用的逻辑完全一致,都是按任意空白符全量拆分,所以你没有察觉到调用的是两个不同实现。
解决方案
场景1:仅拆分当前取出的单个姓名
直接把参数名改为maxsplit即可:
name = df.loc[28,'name'].split(maxsplit=1)
运行后就能得到你想要的["Jan", "van den Berg"]结果。
场景2:对整个name列批量拆分
使用pandas提供的str.split方法,此时可以用n参数,还能直接把拆分结果扩展为两列存入DataFrame:
df[['first_name', 'last_name']] = df['name'].str.split(n=1, expand=True)
内容的提问来源于stack exchange,提问作者Jeroen Bouma
相关产品推荐
相关产品推荐

