调用dataframe列时,find_nearest函数给出错误

时间:2019-07-26 13:43:20

标签: python pandas numpy dataframe

我有类似的数据:

df1 = pd.DataFrame(columns=list('XY'))
df1['X'] = np.arange(0,100,0.1)
df1['Y'] = np.cos(df1['X']) + 30

df2 = pd.DataFrame(columns=list('AB'))
symbols['X'] = [22, 43, 64, 86]

我将函数定义为:

def find_nearest(df1, df1['X'], df2['A'], df1['Y']):
        array = np.asarray(df1['X'])
        idx = (np.abs(array - df2['A'])).argmin()
        return df1.iloc[idx][df1['Y']]

但是调用该行中数据框的列时出现语法错误:

def find_nearest(df1, df1['X'], df2['A'], df1['Y']):

当我直接调用数据框的列时,该函数似乎不喜欢。如果我将各列分配给它们自己的变量,则可以正常工作。但是为了记忆起见,我试图避免这种情况。

有人知道解决方法吗?如果需要澄清,请告诉我。

1 个答案:

答案 0 :(得分:1)

df1['X']在python中不是有效的变量名,您可以改为:


def find_nearest(df1, df1_X, df2_A, df1_Y):
        array = np.asarray(df1_X
        idx = (np.abs(array - df2_A)).argmin()
        return df1.iloc[idx][df1_Y]

或者只是:


def find_nearest(df1, df2):
        array = np.asarray(df1['X'])
        idx = (np.abs(array - df2['A'])).argmin()
        return df1.iloc[idx][df1['Y']]