Pandas 获取值与特定行匹配的所有行

Dyl*_*n Y 1 pandas

所以我有这个代码

unique_values = df.drop_duplicates(keep=False)

for _, row in unique_values.iterrows():
    mask = (df == row).all(axis=1)
    df_subset = df[mask]
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码应该找到数据框中的所有唯一行,然后找到与原始数据框中的这些值匹配的所有行。df_subset无论出于何种原因,即使原始数据帧中有多行匹配,上述代码也仅返回 1 行数据帧row。如何获取 pandas 行中具有特定列值的所有行?

例如,如果我有 row=[0,01] 和一个看起来像 [[0,0,1],[2,2,0],[0,0,1],[0,0,1 ],[0,0,1]] 它应该返回索引 0,2,3,4。

Cor*_*ien 5

IIUC,您可以使用:

>>> df[df.eq(row).all(axis=1)].index.tolist()
[0, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

细节:

>>> pd.concat([df, (m := df.eq(row)), m.all(axis=1)],
              keys=['df', 'mask', 'all'], axis=1)

  df         mask                  all
   0  1  2      0      1      2      0
0  0  0  1   True   True   True   True
1  2  2  0  False  False  False  False
2  0  0  1   True   True   True   True
3  0  0  1   True   True   True   True
4  0  0  1   True   True   True   True
Run Code Online (Sandbox Code Playgroud)

输入数据框:

>>> df
   0  1  2
0  0  0  1
1  2  2  0
2  0  0  1
3  0  0  1
4  0  0  1

>>> row
[0, 0, 1]
Run Code Online (Sandbox Code Playgroud)