当尝试减去两个值时,For loop on Pandas返回NaN For all值?

2024-04-23 17:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用曼哈顿距离手工计算k-3近邻

我有一个名为data的数据帧和一个名为query的查询观察。我需要能够为data中的每个观察值做类似的sum(abs(query-data))

到目前为止,我已经编写了这样的for循环:

 numeric_columns = data.columns[data.dtypes == np.number]

for rows in data:
    print(query[numeric_columns] - data[numeric_columns])

这将返回原始长度为data:16的所有列名称,其值为NaN,超过16倍。 我对为循环编写代码还很陌生,我真的不明白我在这里做错了什么。我也希望能够返回距离和索引,但我想我应该首先尝试让for循环正确

有人能帮我吗


Tags: columns数据距离numberfordatanpabs
1条回答
网友
1楼 · 发布于 2024-04-23 17:33:42

有一种方法sub用于减去数据帧。您可以在这里NaNs when subtracting dataframes pandas和这里https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sub.html了解更多信息。 环路是怎么回事。您只希望减去数值列,因此需要进行if检查。 然后循环应该如下所示:

for rows in data:
    if data[rows].dtypes == np.number:
        t = query[row].sub(data[row], fill_value=0)
        print(t)

对于这样的循环,您不需要这个部分numeric_columns = data.columns[data.dtypes == np.number]

相关问题 更多 >