此问题在此处已有答案:
filtering a dataframe with uuids returns an empty result(3个答案)
4天前关闭。
我有一个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()
)
预览:
df
------- 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作为匹配条件选择行?
2条答案
按热度按时间b1zrtrql1#
Pandas显示列的类型为
object
,但我注意到,拉取特定行的值显示pandas将标识符作为UUID而不是简单的字符串:我找不到这个问题的答案,但在尝试了各种方法后,我发现需要以下方法:
pvabu6sv2#
我看到你找到了解决问题的方法。另一种方法是将列值转换为字符串:
df.loc[df['d'].astype(str) == '31abc2af-117d-4fe8-b43f-e68fa429187f']