Python 将结果_类型与应用函数一起使用

Python 将结果_类型与应用函数一起使用,python,pandas,dataframe,Python,Pandas,Dataframe,我想在我创建的上使用,并为每一行返回一个值列表,其中每个值本身就是一列 我编写了以下代码: import pandas as pd def get_list(row): return [i for i in range(5)] df = pd.DataFrame(0, index=np.arange(100), columns=['col']) df.apply(lambda row: get_list(row), axis=1, result_type='expand') 当我添

我想在我创建的上使用,并为每一行返回一个值列表,其中每个值本身就是一列

我编写了以下代码:

import pandas as pd

def get_list(row):
  return [i for i in range(5)]

df = pd.DataFrame(0, index=np.arange(100), columns=['col'])


df.apply(lambda row: get_list(row), axis=1, result_type='expand')
当我添加
result\u type='expand'
以将返回的数组更改为单独的列时,我得到以下错误:

TypeError: ("<lambda>() got an unexpected keyword argument 'result_type'", 'occurred at index 0')
TypeError:(“()获取了一个意外的关键字参数'result\u type','发生在索引0'处)
但是,如果我删除
result\u type
字段,它运行正常(返回一列数组),可能会出现什么问题

  • 我正在使用运行我的代码

此代码适用于pandas版本0.23.3,正确地说,您只需在终端中运行
pip安装——升级pandas

您可以在不使用
结果类型的情况下完成此操作,如下所示:

def get_list(row):
    return pd.Series([i for i in range(5)])

df = pd.DataFrame(0, index=np.arange(100), columns=['col'])
pd.concat([df, df.apply(get_list, axis=1)], axis=1)

    col 0   1   2   3   4
0   0   0   1   2   3   4
1   0   0   1   2   3   4
2   0   0   1   2   3   4
3   0   0   1   2   3   4
4   0   0   1   2   3   4
...
顺便说一句,您不需要lambda,您可以:

df.apply(get_list, axis=1, result_type='expand')
更新
pandas 0.23的发行说明中公布了结果类型:因此,我担心您必须进行更新。

此代码在pandas 0.23.3版本中对我有效。如果OP无法升级其模块,该怎么办?我添加了一个替代选项,但
结果类型
是在0.23中推出的。我尝试了您编写的代码,它添加了一列,其中每个值都是一个数组,它没有将数组中的每个值添加到单独的列中。我更改了get_list的函数以返回一个
pd.Series
,您检查了吗?输出只有5行,我希望它将5列添加到所有100行中