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
字段,它运行正常(返回一列数组),可能会出现什么问题
- 我正在使用运行我的代码
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行中