Eu tenho um dataframe em pandas com colunas de dados int e str mistos. Quero concatenar primeiro as colunas dentro do dataframe. Para fazer isso, tenho que converter uma int
coluna para str
. Tentei fazer o seguinte:
mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])
ou
mtrx['X.3'] = mtrx['X.3'].astype(str)
mas em ambos os casos não está funcionando e estou recebendo um erro dizendo "não é possível concatenar objetos 'str' e 'int'". Concatenar duas str
colunas está funcionando perfeitamente bem.
Respostas:
Converter uma série
Não se esqueça de atribuir o resultado de volta:
Converter todo o quadro
fonte
Altere o tipo de dados da coluna DataFrame:
Para int:
df.column_name = df.column_name.astype(np.int64)
Para str:
df.column_name = df.column_name.astype(str)
fonte
apply(str)
@Jeff, em meu teste de usopd.Series(np.arange(1000000))
.df['A'] = df['A'].apply(str)
também funciona. A resposta fornecida por @Jeff não funciona para mim.apply()
vez deastype()
: timeit.Timer ('c.apply (str)', setup = 'import pandas as pd; c = pd.Series (range ( 1000)) '). Timeit (1000) >>> 0.41499893204309046 >>> timeit.Timer (' c.astype (str) ', setup =' import pandas as pd; c = pd.Series (range (1000)) ' ) .timeit (1000) 0,8004439630312845Aviso : as duas soluções fornecidas ( astype () e apply () ) não preservam os valores NULL na forma nan ou None.
Acredito que isso seja corrigido pela implementação de to_string ()
fonte
Use o seguinte código:
fonte
Apenas para uma referência adicional.
Todas as respostas acima funcionarão no caso de um quadro de dados. Mas se você estiver usando lambda ao criar / modificar uma coluna, isso não funcionará, porque lá ele é considerado um atributo int em vez de uma série de pandas. Você tem que usar str (target_attribute) para torná-lo uma string. Consulte o exemplo abaixo.
fonte