我想将字典作为附加参数传递给函数。该函数将应用于数据帧的每一行。所以我使用“申请”。下面我有一个我尝试的小例子:
import pandas as pd
import numpy as np
def fun(df_row, dict1):
return df_row['A']*2*max(dict1['x'])
df = pd.DataFrame(np.random.randn(6,2),columns=list('AB'))
dict_test = {'x': [1,2,3,4], 'y': [5,6,7,8]}
df['D'] = df.apply(fun, args = (dict_test), axis = 1)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:('fun() 只需要 1 个参数(给定 3 个)',u'occurred at index 0')我使用 **dict1 来指示函数 'fun' 中的键值对
奇怪的是,如果我通过两次争论,事情就会很好
def fun(df_row, dict1, dict2):
return df_row['A']*2*max(dict1['x'])
df = pd.DataFrame(np.random.randn(6,2),columns=list('AB'))
dict_test = {'x': [1,2,3,4], 'y': [5,6,7,8]}
df['D'] = df.apply(fun, axis = 1, args = (dict_test, dict_test))
Run Code Online (Sandbox Code Playgroud)
Sto*_*ica 10
问题是您没有传递元组,(dict_test)不是元组,它与dict_test. 您需要一个元组dict_test作为唯一元素,即(dict_test,).
df['D'] = df.apply(fun, args=(dict_test,), axis=1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |