Saya memiliki kerangka data dalam panda dengan kolom data int dan str campuran. Saya ingin menggabungkan kolom pertama di dalam dataframe. Untuk melakukan itu saya harus mengubah int
kolom menjadi str
. Saya sudah mencoba melakukan sebagai berikut:
mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])
atau
mtrx['X.3'] = mtrx['X.3'].astype(str)
tetapi dalam kedua kasus itu tidak berfungsi dan saya mendapatkan kesalahan yang mengatakan "tidak dapat menggabungkan objek 'str' dan 'int'". Menggabungkan dua str
kolom bekerja dengan baik.
Jawaban:
Ubah seri
Jangan lupa untuk mengembalikan hasilnya:
Ubah keseluruhan frame
sumber
Ubah tipe data kolom DataFrame:
Ke int:
df.column_name = df.column_name.astype(np.int64)
Untuk str:
df.column_name = df.column_name.astype(str)
sumber
apply(str)
dari @Jeff, dalam pengujian saya menggunakanpd.Series(np.arange(1000000))
.df['A'] = df['A'].apply(str)
juga bekerja. Jawaban yang diberikan oleh @Jeff tidak berhasil untuk saya.apply()
daripadaastype()
: 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.8004439630312845Peringatan : Kedua solusi yang diberikan ( astype () dan apply () ) tidak mempertahankan nilai NULL baik dalam bentuk nan atau None.
Saya yakin ini diperbaiki dengan penerapan to_string ()
sumber
Gunakan kode berikut:
sumber
Sekadar referensi tambahan.
Semua jawaban di atas akan berfungsi dalam kasus kerangka data. Tetapi jika Anda menggunakan lambda saat membuat / memodifikasi kolom, ini tidak akan berfungsi, Karena di sana dianggap sebagai atribut int daripada seri pandas. Anda harus menggunakan str (target_attribute) untuk menjadikannya sebagai string. Silakan lihat contoh di bawah ini.
sumber