在pandas中,基于列中列表值选择DataFrame的行

3
我是pandas的新手,我有一个简单的数据框,并希望根据一列提取特定的行。然而,这一列中的类型是列表。

示例:

df = pd.DataFrame([['text1', [1,2,3]], ['text2', [2,3,4]]], columns=['text','list_value'])

数据帧如下所示:

    text    list_value
0   text1   [1, 2, 3]
1   text2   [2, 3, 4]

我尝试过

df.loc[df['list_value'] == [1,2,3]]

并且它返回一个错误 :
ValueError: Arrays were different lengths: 2 vs 3

我想知道是否有比使用for循环迭代数据框更好的解决方案。
类似的问题,但是答案对我不起作用:在pandas中根据列中的值选择行
1个回答

3
您可以使用apply tuple来解决一些情况下Pandas返回奇怪结果的问题,尤其是当单元格中存在列表时。
df.loc[df['list_value'].apply(tuple) == tuple([1,2,3])]
Out[58]: 
    text list_value
0  text1  [1, 2, 3]

1
非常感谢!但我不明白为什么会出现“数组长度不同:2 vs 3”的错误。我猜3是该列中列表的长度,但2是什么呢? - Leoli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接