Python: Pandas - преобразование типа объекта в строку в датафрейме - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь преобразовать объект в строку в моем фрейме данных, используя панд.Имея следующие данные:

particulars
NWCLG 545627 ASDASD KJKJKJ ASDASD
TGS/ASDWWR42045645010009 2897/SDFSDFGHGWEWER
dtype:object

при попытке преобразовать столбец данных из объекта в строку , используя astype () [с типами str, | S, | S32, | S80] или напрямую с использованием функций str он не преобразуется в строку (остается объектом), а для методов str [замена '/' на ''] говорит AttributeError: 'DataFrame' object has no attribute 'str'

с использованием панд 0.23.4

Также указано: https://github.com/pandas-dev/pandas/issues/18796

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы можете прочитать Excel, указав dtype как str:

df = pd.read_excel("Excelfile.xlsx", dtype=str)

, а затем использовать замену строки в столбце particulars, как показано ниже:

df['particulars'] = df[df['particulars'].str.replace('/','')]

Обратите внимание, что назначение df также является фреймом данных в скобках '[]'.

Когда вы используете в своей программе приведенную ниже команду, она возвращает строку, которую выпытаемся присвоить столбцу данных.Отсюда и ошибка.

df['particulars'] = df['particulars'].str.replace('/',' ')
0 голосов
/ 01 января 2019

Вы можете использовать:

df['particulars'] = df['particulars'].astype('|S')

Или:

df['particulars'] = df['particulars'].astype(str)

Затем используйте приведенный ниже атрибут, на самом деле str может работать даже в вашем случае, просто вы получили к нему доступ внеправильный путь, вы можете получить доступ только к столбцам (Series es):

df['particulars'] = df['particulars'].str.replace('/',' ')

Тогда сейчас:

print(df)

Будет желаемый результат.

Редактировать:

Я понял, что вы можете просто сделать весь код ниже, так как object представляет str:

df['particulars'] = df['particulars'].astype(str).str.replace('/',' ')
...