首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据最相似的列和索引标签(与引用相比)在Pandas Dataframe中查找特定的单元格

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

Stack Overflow用户
提问于 2022-11-22 09:52:40
回答 1查看 22关注 0票数 2

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

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

我能否以某种方式修改方法"loc“和"iloc”以搜索相似性,而不是精确的标签/值?或者有其他方法可以达到这个目的(即使是在熊猫之外)?谢谢你的建议。

代码语言:javascript
运行
复制
#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“。

DataFrame df1

代码语言:javascript
运行
复制
            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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 10:35:29

假设您将列的索引修正为1D:

代码语言:javascript
运行
复制
df1.columns = my_columns[0]
# Float64Index([0.447852, 0.568911395, 0.31997079, 0.451030185, 0.45208958], dtype='float64')

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

代码语言:javascript
运行
复制
import numpy as np

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

输出:-12.463674538

中级:

代码语言:javascript
运行
复制
np.argmin(abs(df1.index-y)), np.argmin(abs(df1.columns-x))

输出:(2, 1)

坐标:

代码语言:javascript
运行
复制
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)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74530609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档