我想在pandas框架中定位一个特定的行(给定其所有列的值).


df = pd.DataFrame(
    columns = ["A", "B", "C"],
    data = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
        [10, 11, 12],
        ])

# row to find (last one)
row = {"A" : 10, "B" : 11, "C" : 12}

# chain
idx = df[(df["A"] == 10) & (df["B"] == 11) & (df["B"] == 11)].index[0]
print(idx)

# iterative
mask = pd.Series([True] * len(df))

for k, v in row.items():
    mask &= (df[k] == v)

idx = df[mask].index[0]
print(idx)

# pandas series
for idx in df.index:
    print(idx,  (df.iloc[idx,:] == pd.Series(row)).all())

有没有更简单的方法?大约idx = df.find(row)

通常需要此功能,例如在时间序列中定位一个特定样本.我不敢相信,没有直接的方法可以做到这一点.

推荐答案

你只是想要吗?

df[df.eq(row).all(1)] #.index # if the indices are needed

输出:

    A   B   C
3  10  11  12

或者,如果您有更多列,并且希望在比较时忽略它们:

df[df[list(row)].eq(row).all(1)]

Python相关问答推荐

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

如何在Python中将returns.context. DeliverresContext与Deliverc函数一起使用?

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

标题:如何在Python中使用嵌套饼图可视化分层数据?

如何制作10,000年及以后的日期时间对象?

通过pandas向每个非空单元格添加子字符串

如何获得每个组的时间戳差异?

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

在pandas中使用group_by,但有条件

当我try 在django中更新模型时,模型表单数据不可见

在pandas/python中计数嵌套类别

具有相同图例 colored颜色 和标签的堆叠子图

python sklearn ValueError:使用序列设置数组元素

根据客户端是否正在传输响应来更改基于Flask的API的行为

如何在一组行中找到循环?

jsonschema日期格式

应用指定的规则构建数组

合并相似列表

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格

根据两个lambda条件筛选组并根据条件创建新列的最佳方式是什么?