pandas 如何使用python获取excel中某个值的单元格/行号?

vq8itlhq  于 2023-01-15  发布在  Python
关注(0)|答案(2)|浏览(246)

我有如下所示的 Dataframe

val
5
7
17
95
23
45

df = pd.read_clipboard()

我想获取每个值的excel单元格/索引/行号

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

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行号是从Excel中提取/找到的

ioekq8ef

ioekq8ef1#

请记住,panda Dataframe 的索引是从零开始的,而excel工作表的行号是从一开始的,因此,如果您想用panda解决这个问题

df["index"] = df.index.astype(int) + 1

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

更新以响应第一条评论

您也可以在.isin中指定值,并根据行索引和列名获取它们的位置。以下代码以Pandas标记打印 Dataframe 中所有52出现的行索引和列名(由于isin([5, 2]))作为示例:

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, col]
    for row, val in df_x.items():
        print(f"row index:{row:3}     column name:{col:3}")
wvt8vs2t

wvt8vs2t2#

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

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

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

index
1
2
6
7
10
12

相关问题