2024-05-23 18:44:45 发布
网友
我正在搜索我的数据帧中的几个变量,并希望每个变量第一次出现的索引。你知道吗
样本数据:
所以,我想要第4列中的数字,对应于第一次出现的行值。例如,“Level 1”列中的“自费”或“Level 2”中首次出现的“Medicaid”。此代码适用于:
idx = (df['Level 1'] == 'Out of pocket').idxmax()
但是有没有一种方法可以做到这一点,而不必指定我希望pandas在其中查找的列。而是在整个数据帧中搜索第一个匹配项。你知道吗
可以使用iterrows访问每行的索引和值。你知道吗
创建虚拟数据帧 df = pd.DataFrame([[1, 'a', '!'], [3, 'b', '?'], [5, 'c', '#'], [7, 'c', '#']], columns=['A', 'B', 'C'])看起来像:
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。你知道吗
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))
可以使用iterrows访问每行的索引和值。你知道吗
创建虚拟数据帧
df = pd.DataFrame([[1, 'a', '!'], [3, 'b', '?'], [5, 'c', '#'], [7, 'c', '#']], columns=['A', 'B', 'C'])
看起来像:我们可以用iterrows写一个for循环并检查行的值,在这种情况下,列B等于'c',列c等于'#',并按如下方式打印第一次出现的索引:
它将返回给我们:
2
。你知道吗或者专门为您:
希望这有帮助!你知道吗
编辑:不需要指定列名:
为了不需要指定列名,我们可以遍历每行中的值。我把它包装在一个函数中,因为这是我所知道的打破嵌套循环的唯一方法,但我相信这是可以改进的。你知道吗
相关问题 更多 >
编程相关推荐