所以我有这个代码
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。
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)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |