python - 根据最相似的列和索引标签(与引用相比)查找 Pandas Dataframe 内的特定单元格

标签 python pandas dataframe numpy

我的数据框约有 500 列和 300 行,如下例所示。与引用相比,我需要根据最相似的列标签和索引标签选择特定的数据框单元格。

让我解释一下我的问题: 假设我需要找到一个单元格,其列标签与引用 x=0.561697 最相似,索引标签与引用 y=-0.12849 最相似。最有可能的是,我的数据框的列和索引中没有引用的标签,但是有非常相似的标签,这就是我想要找到的。另一个问题是,有时相似度最多为小数点后三位,有时仅为小数点后两位。理想的输出是列和索引标签与引用最相似的单元格(即它们在大多数十进制数字上共享相同的数字)。

我可以以某种方式修改方法“loc”和“iloc”来搜索相似性而不是精确的标签/值吗?或者还有其他适合此目的的方法(甚至在 pandas 之外)? 谢谢您的建议。

#example of my dataframe
my_index=[[-0.176931, -0.15578987, -0.134648739]]
my_columns=[[0.447852, 0.568911395, 0.31997079, 0.451030185, 0.45208958]]
data=[[-6.027819824, -7.581473207, -9.277630354, -10.967289156, -12.490250252], [-13.749975397, -14.709719522, -15.317946078, -15.45502317, -14.990571819], [-13.922128986, -12.463674538, -10.987597885, -9.843527599, -9.179409063]]
df=pd.DataFrame(data)
df.columns=my_columns
df1=df.set_index(my_index)
df1

使用此示例,所需的输出将仅为值为“-12.463675”、列标签“0.568911395”和索引标签“-0.134648739”的单元格

数据帧df1:

            0.447852   0.568911   0.319971   0.451030   0.452090
-0.176931  -6.027820  -7.581473  -9.277630 -10.967289 -12.490250
-0.155790 -13.749975 -14.709720 -15.317946 -15.455023 -14.990572
-0.134649 -13.922129 -12.463675 -10.987598  -9.843528  -9.179409

最佳答案

假设您将列的索引修复为一维:

df1.columns = my_columns[0]
# Float64Index([0.447852, 0.568911395, 0.31997079, 0.451030185, 0.45208958], dtype='float64')

您可以使用与目标的最小绝对差异:

import numpy as np

out = df1.iloc[np.argmin(abs(df1.index-y)), np.argmin(abs(df1.columns-x))]

输出:-12.463674538

中级:

np.argmin(abs(df1.index-y)), np.argmin(abs(df1.columns-x))

输出:(2, 1)

坐标:

y_pos = np.argmin(abs(df1.index-y))
x_pos = np.argmin(abs(df1.columns-x))
df1.index[y_pos], df1.columns[x_pos]

输出:(-0.134648739, 0.568911395)

关于python - 根据最相似的列和索引标签(与引用相比)查找 Pandas Dataframe 内的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74530609/

相关文章:

javascript - mongodb 将 xml 导入 mongodb

Python 使用 str 和 int 向列添加前导零

python - 如何在 python 中将大型 csv 文件写入 hdf5?

python - 保留在 pandas 数据框上的 groupby 操作期间无法聚合的列数据的最佳方法是什么?

python - 在 pandas 数据框中删除特定条件下的值

Scala Spark - map 的DataFrame列上的空 map (String,Int)

python - 如何加快 MySQL (InnoDB) 插入速度?

python - 从一个套接字传递到另一个套接字

python - PyQt:把滚动条放在这

python - 子集 Pandas Dataframe 一切都是最新的