Преобразование столбца в pandas dataframe из int в строку
У меня есть dataframe в пандах со смешанными столбцами данных int и str. Я хочу объединить сначала столбцы в кадре данных. Для этого мне нужно преобразовать столбец int
в str
. Я пытался сделать следующее:
mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])
или же
mtrx['X.3'] = mtrx['X.3'].astype(str)
но в обоих случаях это не работает, и я получаю сообщение об ошибке "невозможно объединить объекты str и int". Объединение двух столбцов str
работает отлично.
Ответы
Ответ 1
In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB'))
In [17]: df
Out[17]:
A B
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
In [18]: df.dtypes
Out[18]:
A int64
B int64
dtype: object
Конвертировать серию
In [19]: df['A'].apply(str)
Out[19]:
0 0
1 2
2 4
3 6
4 8
Name: A, dtype: object
In [20]: df['A'].apply(str)[0]
Out[20]: '0'
Не забудьте присвоить результат обратно:
df['A'] = df['A'].apply(str)
Конвертировать весь кадр
In [21]: df.applymap(str)
Out[21]:
A B
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
In [22]: df.applymap(str).iloc[0,0]
Out[22]: '0'
df = df.applymap(str)
Ответ 2
Изменить тип данных столбца DataFrame:
В int:
df.column_name = df.column_name.astype(np.int64)
К str:
df.column_name = df.column_name.astype(str)
Ответ 3
Предупреждение. Оба решения, заданные ( астип() и apply() ), не сохраняют значения NULL ни в наном, ни в None форма.
import pandas as pd
import numpy as np
df = pd.DataFrame([None,'string',np.nan,42], index=[0,1,2,3], columns=['A'])
df1 = df['A'].astype(str)
df2 = df['A'].apply(str)
print df.isnull()
print df1.isnull()
print df2.isnull()
Я считаю, что это исправлено с помощью to_string()
Ответ 4
Использовать этот:
df.column_name = df.column_name.astype('str')