У меня есть DataFrame в панд с одним из типов столбцов, являющихся список на междунар, например, так:Сравнить списки панд DataFrame
df = pandas.DataFrame([[1,2,3,[4,5]],[6,7,8,[9,10]]], columns=['a','b','c','d'])
>>> df
a b c d
0 1 2 3 [4, 5]
1 6 7 8 [9, 10]
Я хотел бы построить фильтр, используя д, но нормальный операции сравнения, кажется, не работает:
>>> df['d'] == [4,5]
0 False
1 False
Name: d, dtype: bool
Однако, когда я инспектировать построчно, я получаю то, что я ожидал бы
>>> df.loc[0,'d'] == [4,5]
True
Что здесь происходит? Как я могу выполнять сравнения списков?
Ваше первое сравнение не будет работать, нет никакого преобразования из серии в список для сравнения. Второй работает, потому что возвращается содержимое элемента, которое является списком, поэтому можно сделать сравнение. Не могли бы вы объяснить, что вы пытаетесь достичь? – EdChum
@EdChum 'd ['d']' возвращает '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '} Я ожидал бы, что возвращаемая серия будет '[True, False]', поскольку первая строка в столбце 'd' имеет тот же список, тогда как второй - нет. Вместо этого я получаю '[false, false]', что для меня не имеет смысла. – Mike
Это может быть ошибка, неуверенная в этом, наличие объекта списка может сбить с толку, возможно, потому что списки не могут быть хэшированы. Если вы вместо этого сохранили dict, то сравнение работает: 'df = pd.DataFrame ([[1,2,3, {'a': [4,5]}], [6,7,8, {'a' : [9,10]}]], columns = ['a', 'b', 'c', 'd']) df.d == {'a': [4,5]} 'Я не предполагая, что это решение – EdChum