【问题标题】:too many values to unpack in apply function (python 2)在应用函数中解压缩的值太多(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,那就可以了。

有人可以建议上面的代码有什么问题,我应该如何纠正?非常感谢。

【问题讨论】:

    标签: python python-2.7 valueerror


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-05
      • 2022-11-17
      • 1970-01-01
      • 2020-08-24
      • 2015-09-04
      • 2017-11-25
      • 2015-01-17
      • 1970-01-01
      相关资源
      最近更新 更多