【发布时间】:2020-11-23 05:22:04
【问题描述】:
在熊猫身上发现了一些非常奇怪的东西。我的数据框(3 行 3 列)如下所示:
当我尝试使用下面的命令将 ID 和名称(下划线分隔)提取到它们自己的列时,它给了我一个错误:
df[['ID','Name']] = df.apply(lambda x: get_first_last(x['ID_Name']), axis=1, result_type='broadcast')
错误是:
ValueError: cannot broadcast result
虽然这是有趣的部分..当我从原始数据框中删除“From_To”列时,执行相同的 df.apply() 来拆分 ID_Name 工作得很好,我得到这样的新列:
我已经检查了很多 SO 答案,但似乎没有任何帮助。我在这里错过了什么?
附注get_first_last 是一个非常简单的函数,如下所示:
def get_first_last(s):
str_lis = s.split("_")
return [str_lis[0], str_lis[1]]
【问题讨论】:
-
你需要
result_type='expand'。而且你也不需要在这里使用apply,你可以简单地使用df['ID_Name'].str.split('_', expand=True)。 -
请在问题中包含输入 as text,以便其他人可以复制它。
标签: python pandas data-science data-cleaning