在我的数据框中,一列由列表组成,例如:
df = pd.DataFrame({'A':[[1,2],[2,4],[3,1]]})
我需要找出列表[1,2]在此数据框中的位置。我尝试过:
df.loc[df['A'] == [1,2]]
和
df.loc[df['A'] == [[1,2]]]
但是完全失败了。比较似乎很简单,但这是行不通的。我在这里想念东西吗?
答案 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)
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__)]