【发布时间】:2019-07-26 13:43:20
【问题描述】:
我有如下数据:
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']):
当我直接调用数据框列时,该函数似乎不喜欢。如果我将列分配给它们自己的变量,这很好。但为了记忆,我试图避免这种情况。
有人知道解决方法吗?如果有什么需要澄清的,请告诉我。
【问题讨论】:
-
这可能有助于提高效率 - stackoverflow.com/questions/45349561。
-
在这种情况下调用数据框列仍然会产生语法错误。虽然,看到它更有效,但一旦我解决了语法错误,我可能会使用它而不是我原来的。谢谢@Divakar
-
Linked one 需要数组,它会找到一个数组相对于另一个数组最接近的 argmin 索引。因此,您需要相应地输入输入 -
df1['X'].values等。 -
您在定义函数时缺少括号,可能就是这样
-
刚刚检查了原始代码,不是这样。我只是忘了把它放在这里。感谢@AyoubZAROU 的收获
标签: python pandas numpy dataframe