You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中筛选包含指定UUID的行?

问题:如何通过UUID筛选Pandas DataFrame的行?

我创建了一个Pandas DataFrame,其中一列存储UUID:

import numpy as np
import pandas as pd
import uuid

df = pd.DataFrame(
    data=[[1, 2, 3], [4, 5, 6]],
    columns=['a', 'b', 'c']
)

df['d'] = np.NaN
df['d'] = df['d'].apply(
    lambda x: uuid.uuid4()
)

DataFrame预览结果:

-------     a   b   c   d
------- 0   1   2   3   31abc2af-117d-4fe8-b43f-e68fa429187f
------- 1   4   5   6   f63b36c8-bb4e-4148-ace9-a89fa117e15c

尝试用以下代码根据UUID筛选行时,返回空行集:

df.loc[
    df['d'] == '31abc2af-117d-4fe8-b43f-e68fa429187f'
]

原因分析

uuid.uuid4()生成的是UUID对象,而非字符串类型。直接用字符串和UUID对象做相等比较,结果永远是False,因此筛选不到任何行。

解决方案

有两种可行的处理方式:

方式1:生成UUID时直接转为字符串

在创建DataFrame的UUID列时,把生成的UUID对象转为字符串,后续筛选直接用字符串匹配即可:

import numpy as np
import pandas as pd
import uuid

df = pd.DataFrame(
    data=[[1, 2, 3], [4, 5, 6]],
    columns=['a', 'b', 'c']
)

df['d'] = df['d'].apply(lambda x: str(uuid.uuid4()))  # 转为字符串

# 筛选代码正常工作
df.loc[df['d'] == '31abc2af-117d-4fe8-b43f-e68fa429187f']

方式2:筛选时将字符串转为UUID对象

如果DataFrame的UUID列已经是UUID对象类型,可将目标字符串转为UUID对象后再进行比较:

import uuid

target_uuid = uuid.UUID('31abc2af-117d-4fe8-b43f-e68fa429187f')
result = df.loc[df['d'] == target_uuid]

内容的提问来源于stack exchange,提问作者philipnye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:02:25