我有类似的数据:
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']):
当我直接调用数据框的列时,该函数似乎不喜欢。如果我将各列分配给它们自己的变量,则可以正常工作。但是为了记忆起见,我试图避免这种情况。
有人知道解决方法吗?如果需要澄清,请告诉我。
答案 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']]