Python 调用dataframe列时,find_nearest函数出错

Python 调用dataframe列时,find_nearest函数出错,python,pandas,numpy,dataframe,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']):

我有如下数据:

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']):
当我直接调用数据帧的列时,函数似乎不喜欢。如果我将这些列分配到它们自己的变量中,则效果很好。但为了记忆起见,我正试图避免这种情况


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

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


def查找最近的(df1、df1\U X、df2\U A、df1\U Y):
数组=np.asarray(df1_X
idx=(np.abs(array-df2_A)).argmin()
返回df1.iloc[idx][df1_Y]
或者只是:


def查找最近的(df1、df2):
array=np.asarray(df1['X'])
idx=(np.abs(array-df2['A']).argmin()
返回df1.iloc[idx][df1['Y']]

这可能有助于实现高效的数据帧-。在这种情况下调用dataframe列仍然会产生语法错误。尽管这样更有效,但一旦解决了语法错误,我可以使用它来代替原来的语法错误。感谢@DivakarLinked one需要数组,它会找到一个数组相对于一个数组最接近的argmin索引另外,您需要相应地输入-
df1['X'].values
,等等。您在定义函数时缺少了一个括号,这可能是因为它只是检查了原始代码,而不是它。我只是忘了把它放在这里。感谢您的帮助,尽管@Ayoubzarou认为它很简单。这很有效,感谢我的帮助,愉快地编码