Данные во втором столбце col2
выглядят просто строками.
Вывод из df['col2'][0][1]
будет "r"
, который является вторым символом (индекс 1) в первой строке. Чтобы получить "cat"
, вам нужно изменить строки и удалить 'WrappedArray([animal]...'
. оставив только актуальные данные. "кошка", "собака", и т. д. c.
Вы можете попробовать df['col2'].iloc[0][24:27]
, но это не общее решение. Это также будет хрупким и неприемлемым.
Если у вас есть любой контроль над тем, как данные экспортируются из базы данных, попробуйте вывести данные в более чистом формате, то есть без вещи WrappedArray(...
.
Регулярные выражения могут быть полезны здесь.
Вы можете попробовать что-то вроде этого:
import re
wrapped = re.compile(r'\[(.*?)\].+\[(.*?)\]')
element = wrapped.search(df['col2'].iloc[0]).group(2)
* Опасно Опасно Опасно *
Если вам нужна эта функциональность. Вы можете создать WrappedArray
функция, которая возвращает содержимое в виде списка строк и т. Д. Затем вы можете вызвать его с помощью eval(df['col2'][0][1])
.
Не делайте этого.
FYI:
Вероятно, ваши dtypes по умолчанию настроены на объект, поскольку вы не указали их при создании фрейма данных. Это можно сделать так:
df = pd.DataFrame(data=sample, dtype='string')
Также рекомендуется используйте ilo c для индексации фреймов данных по индексу.