Ak-*_*-Mo 6 python dataframe pandas
我想在我创建的pandas.DataFrame上使用apply,并为每一行返回一个值列表,其中每个值本身就是一列.
我写了以下代码:
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')
Run Code Online (Sandbox Code Playgroud)
当我添加result_type='expand'以便将返回的数组更改为单独的列时,我收到以下错误:
TypeError: ("<lambda>() got an unexpected keyword argument 'result_type'", 'occurred at index 0')
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除该result_type字段它运行正常(返回一列数组),可能是什么问题?
此代码适用于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
...
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你不需要lambda它,你可以只:
df.apply(get_list, axis=1, result_type='expand')
Run Code Online (Sandbox Code Playgroud)
更新 结果类型已在pandas 0.23的发布说明中公布:https://pandas.pydata.org/pandas-docs/stable/whatsnew.html#whatsnew-0230所以我担心你必须更新.