Saya telah bekerja dengan data yang diimpor dari CSV. Panda mengubah beberapa kolom menjadi mengambang, jadi sekarang angka-angka dalam kolom ini ditampilkan sebagai titik mengambang! Namun, saya ingin mereka ditampilkan sebagai bilangan bulat, atau, tanpa koma. Apakah ada cara untuk mengubahnya menjadi bilangan bulat atau tidak menampilkan koma?
230
df.col = df.col.astype(int)
df = df.astype(int)
Jawaban:
Untuk memodifikasi keluaran float, lakukan ini:
sumber
df.a = df.a.astype(float)
? Apakah ini membuat salinan (tidak yakin bagaimanacopy
paramastype()
digunakan)? Pokoknya untuk memperbarui jenis "di tempat"?DF.({'200': {'#': 354, '%': 0.9971830985915493}, '302': {'#': 1, '%': 0.0028169014084507044}})
Perhatikan # dapatkan konversi ke float dan itu adalah baris, bukan kolom. karena masing-masing adalahSeries
yang hanya dapat menyimpan satu jenis seragam?dtype
? Jika itudtype
maka Anda perlu membuat kolom-kolomdtype
object
itu sehingga memungkinkan dicampur, kalau tidak saran saya akan hanya menggunakan float dan ketika melakukan perbandingan gunakannp.isclose
Menggunakan
pandas.DataFrame.astype(<type>)
fungsi ini untuk memanipulasi dtypes kolom.EDIT:
Untuk menangani nilai yang hilang:
sumber
Mempertimbangkan kerangka data berikut:
Menggunakan daftar nama kolom, ubah jenis untuk beberapa kolom dengan
applymap()
:Atau untuk satu kolom dengan
apply()
:sumber
ValueError: ('cannot convert float NaN to integer', u'occurred at index <column_name>')
df['C'] = df['C'].dropna().apply(np.int64)
Ini adalah solusi cepat jika Anda ingin mengkonversi lebih banyak kolom
pandas.DataFrame
dari float ke integer dengan mempertimbangkan juga kasus bahwa Anda dapat memiliki nilai NaN.Saya mencoba dengan
else x)
danelse None)
, tetapi hasilnya masih memiliki nomor float, jadi saya gunakanelse ""
.sumber
""
untuk semua nilai dicol
Memperluas pada @Ryan G menyebutkan penggunaan
pandas.DataFrame.astype(<type>)
metode ini, orang dapat menggunakanerrors=ignore
argumen untuk hanya mengonversi kolom-kolom yang tidak menghasilkan kesalahan, yang terutama menyederhanakan sintaksis. Jelas, kehati-hatian harus diterapkan ketika mengabaikan kesalahan, tetapi untuk tugas ini sangat berguna.Dari pandas.DataFrame.astype docs:
sumber
sumber
Untuk mengkonversi semua kolom float ke int
sumber
Berikut adalah fungsi sederhana yang akan mengirim data mengambang ke tipe integer sekecil mungkin yang tidak kehilangan informasi apa pun. Sebagai contoh,
100.0 dapat dikonversi dari float ke integer, tetapi 99.9 tidak dapat (tanpa kehilangan informasi menjadi pembulatan atau pemotongan)
Selain itu, 1.0 dapat di-downcast sepenuhnya
int8
tanpa kehilangan informasi, tetapi tipe integer terkecil untuk 100_000.0 adalahint32
Contoh kode:
sumber
Kolom yang perlu dikonversi ke int dapat disebutkan dalam kamus juga seperti di bawah ini
sumber
sumber
astype(int)
sudah disebutkan beberapa kali. Jawaban ini tidak menambahkan sesuatu yang baru.