结合使用result_type和pandas套用功能

时间:2018-10-17 11:46:35

标签: python pandas dataframe

我想在创建的apply上使用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')

当我添加result_type='expand'以便将返回的数组更改为单独的列时,出现以下错误:

TypeError: ("<lambda>() got an unexpected keyword argument 'result_type'", 'occurred at index 0')

但是,如果我放下result_type字段,它运行正常(返回一列数组),可能是什么问题?

  • 我正在使用colab来运行代码

1 个答案:

答案 0 :(得分:7)

此代码在pandas版本0.23.3中有效,您只需要在终端中运行pip install --upgrade pandas

您可以在没有result_type的情况下完成此操作,

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')

更新 在熊猫0.23:https://pandas.pydata.org/pandas-docs/stable/whatsnew.html#whatsnew-0230的发行说明中宣布了result_type,因此恐怕您将需要更新。