在整个数据帧中搜索一个变量并返回第一个出现的片段

2024-05-23 18:44:45 发布

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

我正在搜索我的数据帧中的几个变量,并希望每个变量第一次出现的索引。你知道吗

样本数据:

enter image description here

所以,我想要第4列中的数字,对应于第一次出现的行值。例如,“Level 1”列中的“自费”或“Level 2”中首次出现的“Medicaid”。此代码适用于:

    idx = (df['Level 1'] == 'Out of pocket').idxmax()

但是有没有一种方法可以做到这一点,而不必指定我希望pandas在其中查找的列。而是在整个数据帧中搜索第一个匹配项。你知道吗


Tags: of数据方法代码pandasdf数字out
1条回答
网友
1楼 · 发布于 2024-05-23 18:44:45

可以使用iterrows访问每行的索引和值。你知道吗

创建虚拟数据帧 df = pd.DataFrame([[1, 'a', '!'], [3, 'b', '?'], [5, 'c', '#'], [7, 'c', '#']], columns=['A', 'B', 'C'])看起来像:

    A   B   C
0   1   a   !
1   3   b   ?
2   5   c   #
3   7   c   #

我们可以用iterrows写一个for循环并检查行的值,在这种情况下,列B等于'c',列c等于'#',并按如下方式打印第一次出现的索引:

for index, row in df.iterrows():
    if (row.B == 'c') & (row.C == '#'):
        print(index)
        break

它将返回给我们:2。你知道吗

或者专门为您:

for index, row in df.iterrows():
    if (row['Level 1'] == 'Health Insurance') & (row['Level 2'] == 'Medicare'):
        print(index)
        break

希望这有帮助!你知道吗

编辑:不需要指定列名:

为了不需要指定列名,我们可以遍历每行中的值。我把它包装在一个函数中,因为这是我所知道的打破嵌套循环的唯一方法,但我相信这是可以改进的。你知道吗

def look_for_word(word='Medicare', df=df):
    for index, row in df.iterrows():
        for val in row:
            if val == word:
                return df['YOUR FOURTH COLUMN NAME'].iloc[index]

print(look_for_word(word='Medicare', df=df))

相关问题 更多 >