Как указать тип столбца в панде - PullRequest
0 голосов
/ 02 мая 2018

После выполнения этой строки

data['numbers'] = data.apply(lambda row : [1] * len(row.text), axis=1)

Столбец 'numbers' не является списком, как я ожидаю, но вместо этого он имеет тип объекта, который не может быть проиндексирован, и я получаю IndexError.

В результате я хочу получить столбец с «числами», в котором каждая строка имеет столько же, сколько длина соответствующего текста в строке.

Как я могу это исправить?

1 Ответ

0 голосов
/ 02 мая 2018

dtype из string с, dict с, list с, set с, tuple с всегда object, для тестирования type использование:

data = pd.DataFrame({'text':['aaas','as']}, index=[10,12])

data['numbers'] = data.apply(lambda row : [1] * len(row.text), axis=1)

print (data['numbers'].apply(type))
0    <class 'list'>
1    <class 'list'>
Name: numbers, dtype: object

#check scalar
print (type(data.loc[0, 'numbers']))
<class 'list'>

Если хотите проверить length s:

print (len(data.iloc[0, data.columns.get_loc('numbers')]))
4

data['lens'] = data['numbers'].str.len()
print (data)

    text       numbers  lens
10  aaas  [1, 1, 1, 1]     4
12    as        [1, 1]     2
...