【问题标题】:find_nearest function gives error when calling dataframe columnfind_nearest 函数在调用数据框列时出错
【发布时间】: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


【解决方案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']]

【讨论】:

  • 认为这很简单。这工作,谢谢
  • 很高兴能帮上忙,编码愉快
猜你喜欢
  • 2022-07-08
  • 2013-02-07
  • 2012-07-22
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多