在应用函数中解压缩的值太多(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:解压缩的值太多[重复]

Python2.7:要解包的值太多 - 列数未知

ValueError:python2.7 的 zip 解压的值太多

为啥这个 Django 错误“要解压的值太多”?

将 Django 应用程序部署到 AWS 时出现“ValueError:要解压的值太多”