在应用函数中解压缩的值太多(python 2)
Posted
技术标签:
【中文标题】在应用函数中解压缩的值太多(python 2)【英文标题】:too many values to unpack in apply function (python 2) 【发布时间】:2018-02-14 08:57:37 【问题描述】:我写了一个简单的函数来分割一个字符串。
def split2(target):
(key, host) = target.split('_')
return (key, host)
(combined['host'], combined['timestamp']) = combined['key'].apply(split2)
combined['key']
是一个熊猫系列,由'ibmserver_4/12/2007'
这样的字符串组成
多次尝试后,我仍然有 ValueError: too many values to unpack。如果我将 split2 函数中的返回参数减为 1,那就可以了。
有人可以建议上面的代码有什么问题,我应该如何纠正?非常感谢。
【问题讨论】:
【参考方案1】:更简单的方法是将str
直接与pandas 分开,使用expand=True
创建单独的列,例如:
>>> combined['key'].str.split('_', expand=True)
0 1
0 ibmserver 4/12/2007
将其分配给多个列的正确方法是:
>>> combined[['host', 'timestamp']] = combined['key'].str.split('_', expand=True)
>>> combined
key host timestamp
0 ibmserver_4/12/2007 ibmserver 4/12/2007
要使您的函数正常工作,您需要将返回的元组转换为系列,例如:
>>> combined[['host', 'timestamp']] = combined['key'].apply(split2).apply(pd.Series)
【讨论】:
以上是关于在应用函数中解压缩的值太多(python 2)的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中使用 NLTK 和 Pandas 解压的值太多
Python中的ValueError:解压缩的值太多[重复]