如何使用 python 获取值的 excel cell/row 个数?

How to get excel cell/row number of a value using python?

我有如下所示的数据框

val
5
7
17
95
23
45

df = pd.read_clipboard()

我想获取每个值的 excel cell/index/row 数字

我正在尝试类似下面的操作,但不确定我是否过于复杂

for row in range(1,99999):
    for col in range(1,2999999):
        if wb.sheets[1].range((row,col)).value == 5:
            print("The Row is: "+str(row)+" and the column is "+str(col))
        else
            row = row + 1

我也尝试过类似下面的方法,但也不起作用

wb.sheets[1].range("A9:B500").options(pd.DataFrame).value

基本上,我有一个值列表,想找出它们出现在excel中的哪一列和哪一行。有人可以帮我吗?

我希望我的输出如下所示。 Excel 行号是 extracted/found 来自 excel

我认为获取索引行最简单的解决方案是使用此命令:

df["index"] = df.index.to_list()

将使用索引值创建一个新列。因此,您可以根据需要使用此列进行格式化。

index
1
2
6
7
10
12

请记住,pandas 数据帧的索引是 zero-based,excel 工作表的行号是 one-based,因此,如果您想解决pandas

这个问题
df["index"] = df.index.astype(int) + 1

正确。但是,请注意,您问题中的图片显示了 excel 工作表的一部分,其中应用了活动过滤器。此处提供的解决方案仅在 excel 中的数据未被过滤时才有效。

更新以回复第一条评论

您还可以在 .isin 中指定值,并使用以下代码(不漂亮)根据索引和列获取它们的位置:

import pandas as pd

df = pd.DataFrame((
    (2, 5, 8),
    (20, 5, 772),
    (0, 20, 5),
    (2, 0, 0),
    (76, 35, 66),
    (23, 21, 29),
    (5, 55, 88),
    (44, 23, 5),
    (1, 2, 3),
    ), columns=["a", "b", "c"])

cols = df.columns.to_list()
for col in cols:
    filt = df[col].isin([5, 2])
    df_x = df.loc[filt]
    for row, vals in df_x.iteritems():
        for val in vals.index:
            print(f"index:{val:4}     column:  {col}")