Pandas(或Excel)查找搜索键并获取值

Pandas (or Excel) find Search Key and get Value

我有一个 Excel 文件,我用 pandas 读入数据框。 在这个 Excel 文件中是不同的键值对。

我想搜索键并获取值(具有行 and/or 列偏移量)

到目前为止,这是我的代码(带有示例数据框):

import json
import pandas as pd

def SearchValues(df,str_search,r_offset,c_offset):
    print(df[df.eq(str_search).any(1)])
    #return Value

data = {'Unnamed: 1':  ['', ''],
        'Unnamed: 2': ['', 'Key1'],
        'Unnamed: 3': ['', ''],
        'Unnamed: 4': ['', 'Value1'],
        'Unnamed: n': ['Key2', 'Value2'],
   }

df = pd.DataFrame(data)


SearchValues(df,'Key1',0,2) #=> result= Value1
SearchValues(df,'Key2',1,0) #=> result= Value2

我在搜索功能上很挣扎。这是一种可能的方法吗?如果是,我该如何进行? 或者有没有其他选择。也许没有数据框可以直接在 Excel 文件中搜索。

您可以将索引重置为具有数值范围,然后使用堆叠的 DataFrame 来识别第一个匹配项并获取索引,然后在添加偏移量后切片:

def SearchValues(df, str_search, r_offset, c_offset):
    # reset the index/columns to be a numerical range
    df = df.set_axis(range(df.shape[1]), axis=1).reset_index(drop=True)

    # find the row/col coordinates of the first match
    r,c = df.eq(str_search).stack().idxmax()

    # add the offsets and slice based on position
    return df.loc[r+r_offset, c+c_offset]

SearchValues(df, 'Key1', 0, 2)
# 'Value1'

SearchValues(df, 'Key2', 1, 0)
# 'Value2'

注意。这不处理偏移量使其溢出 DataFrame 尺寸的情况,但是使用 df.shape

添加检查非常容易