熊猫:比较系列中的列表对象

时间:2018-11-01 13:53:35

标签: python pandas

在我的数据框中,一列由列表组成,例如:

df = pd.DataFrame({'A':[[1,2],[2,4],[3,1]]})

我需要找出列表[1,2]在此数据框中的位置。我尝试过:

df.loc[df['A'] == [1,2]]

df.loc[df['A'] == [[1,2]]]

但是完全失败了。比较似乎很简单,但这是行不通的。我在这里想念东西吗?

5 个答案:

答案 0 :(得分:12)

请勿在单元格中使用list,这会给pandas带来很多问题。如果您确实需要object列,请使用tuple

df.A.map(tuple).isin([(1,2)])
Out[293]: 
0     True
1    False
2    False
Name: A, dtype: bool
#df[df.A.map(tuple).isin([(1,2)])]

答案 1 :(得分:10)

您可以使用apply并进行比较:

df['A'].apply(lambda x: x==[1,2])

0     True
1    False
2    False
Name: A, dtype: bool

print(df[df['A'].apply(lambda x: x==[1,2])])

        A
0  [1, 2]

答案 2 :(得分:9)

具有Numpy数组

const

答案 3 :(得分:6)

使用numpy

df.A.apply(lambda x: (np.array(x) == np.array([1,2])).all())

0     True
1    False
2    False

答案 4 :(得分:0)

或者:

df['A'].apply(([1,2]).__eq__)

然后:

df[df['A'].apply(([1,2]).__eq__)]