在dataframe中查找任何单元格值>=x,并返回单元格值、列标题、行和相邻单元格值

2024-06-23 18:44:46 发布

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

我意识到这是一个相当长的问题,但我一直试图解决这几天来没有成功,并怀疑是否有人可能有一些想法。你知道吗

考虑这样一个电子表格:

        apple1  grape1  apple2  grape2  apple3  grape3
1          0       4     -0.2     2       0       4
2          0       4       0      6       0       3
3        -0.1      2       0      4       0       4
4        -0.5      5       0      6     -0.2      5
5        -0.4      4       0      5       0       2
6          0       6     -0.1     5       0       3

我想在我的数据帧中搜索任何值小于-0.1的单元格,并写出值、列标题、行号和相邻值。你知道吗

一开始,我觉得这可能很简单:

Newlist()

if df >= -0.1:
   Newlist.append(cell.value)
   Newlist.append(row.value)
   Newlist.append(column.value)
   Newlist.append(cell.value.shift(1))

我完全意识到上面的话毫无意义,但我希望它能传达出我一直在努力的想法。你知道吗

接下来,我可以将df转换为一个列表并从中开始工作(使用ifnot>;=-0.1删除对象?),但这似乎不雅观,远离理想。不过,如果有人能让它发挥作用,我对此持开放态度。你知道吗

我一定已经看了每一个堆栈交换问题张贴在这个没有管理任何东西,所以道歉,如果我忽略了一些非常明显的东西。你知道吗

谢谢!你知道吗


Tags: 数据标题dfvaluecell电子表格意识append
1条回答
网友
1楼 · 发布于 2024-06-23 18:44:46

首先,要过滤数据帧,可以使用boolean indexing如下:

df[df >= -0.1]

这样,所有不优于-0.1的数据都将显示为nan,然后可以使用Pandas.isnull()来标识它们。你知道吗

要获取所需数据的行和列,可以使用df.to_numpy()将数据帧转换为数组,并使用enumerate对行和列进行迭代,以保持当前正在迭代的行/列的id:

my_data = df[df >= -0.1].to_numpy()
for idrow, row in enumerate(my_data):
   for idcol, col in enumerate(row):
       if not pd.isnull(col):
           print("Value :"+str(col)+" column:"+str(idcol)+" row:"+str(idrow))

这将导致如下结果:

Value :0.0 column:0 row:0
Value :4.0 column:1 row:0
Value :2.0 column:3 row:0

可以在循环中使用以下命令获取列名称:

df.columns[idcol]

一旦你得到了这些ID,你就可以通过直接访问ie得到邻近的值

my_data[x][y]

只需记住设置一个条件,不访问不在数组中的值!你知道吗

相关问题 更多 >

    热门问题