Непоследовательные результаты при добавлении нового столбца в Pandas DataFrame. Это серия или ценность?

1

Так что я знаю, что могу добавить новый столбец в Пандах вот так:

df
=====
  A
1 5
2 6
3 7

df['new_col'] = "text"

df
====
  A    new_col
1 5    text
2 6    text
3 7    text

И я также могу установить новый столбец на основе операции над существующим столбцом.

def times_two(x):
    return x * 2

df['newer_col'] = time_two(df.a)
df
====
  A    new_col   newer_col
1 5    text      10
2 6    text      12
3 7    text      14

однако, когда я пытаюсь работать с текстовым столбцом, я получаю неожиданный AttributeError.

df['new_text'] = df['new_col'].upper()
AttributeError: 'Series' object has no attribute 'upper'

Теперь он рассматривает значение как серию, а не значение в этой "ячейке".

Почему это происходит с текстом, а не с числами, и как можно обновить мой DF новым столбцом на основе существующего текстового столбца?

Теги:
pandas
dataframe

1 ответ

1

Это потому, что оператор * реализован как оператор mul а upper не определен для Series. Вы должны использовать str.upper который реализован для Series:

In[53]:
df['new_text'] = df['new_col'].str.upper()
df

Out[53]: 
   A new_col new_text
1  5    text     TEXT
2  6    text     TEXT
3  7    text     TEXT
  • 0
    Привет. Так что спасибо тебе. Я понял, что здесь происходит что-то более низкое. Мой фактический вариант использования пытается sha256 кодировать текстовое поле. Сначала он должен быть закодирован в utf-8. Когда я пытаюсь выполнить любую операцию с текстовым полем, включая кодирование, я получаю сообщение об ошибке. Является ли решение для передачи версии .str?
  • 0
    Если мой ответ разрешил ваш вопрос, то не забудьте принять его, в левом верхнем углу моего ответа будет пустая галочка.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню