Pandas上的For循环在尝试减去两个值时返回所有值的NaN吗?

问题描述 投票:0回答:1

我正在尝试使用曼哈顿距离手动计算k-3个最近的邻居。

我有一个称为data的数据帧和一个名为query的查询观察。我需要能够对sum(abs(query-data))中的每个观察结果执行类似data的操作。

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

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

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

这将返回所有列名,其原始长度为data的值为NaN:16倍。我对编写循环非常陌生,但我不太了解自己在这里做错了什么。我还希望能够返回距离和索引,但是我应该首先尝试使它正确进行循环。

有人可以帮我吗?

python pandas for-loop knn
1个回答
0
投票

有一种方法sub,用于减去数据帧。您可以在NaNs when subtracting dataframes pandas和此处https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sub.html了解更多因此该循环应如下所示:

for rows in data:
    t = query[numeric_columns].sub(data[numeric_value], fill_value=0)
    print(t)
© www.soinside.com 2019 - 2024. All rights reserved.