Bagaimana kita bisa memodifikasi format untuk output dari operasi grup dengan panda yang menghasilkan notasi ilmiah untuk jumlah yang sangat besar?
Saya tahu bagaimana melakukan pemformatan string dalam python tapi saya bingung ketika harus menerapkannya di sini.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
Ini menekan notasi ilmiah jika saya mengonversi ke string tetapi sekarang saya hanya ingin tahu bagaimana memformat string dan menambahkan desimal.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
sumber
sumber
dtypes
hasil Anda?Jawaban:
Memang, jawaban yang saya tautkan di komentar tidak terlalu membantu. Anda dapat menentukan konverter string Anda sendiri seperti itu.
Saya tidak yakin apakah itu cara yang disukai untuk melakukan ini, tetapi itu berhasil.
Mengubah angka menjadi string murni untuk tujuan estetika sepertinya ide yang buruk, tetapi jika Anda memiliki alasan yang bagus, ini adalah salah satu caranya:
sumber
pandas.option_context
(lihat pandas.pydata.org/pandas-docs/stable/generated/… ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
jika Anda menginginkan seribu pemisah juga.Inilah cara lain untuk melakukannya, mirip dengan jawaban Dan Allan tetapi tanpa fungsi lambda:
atau
sumber
Anda dapat menggunakan fungsi bundar hanya untuk menekan notasi ilmiah untuk kerangka data tertentu:
atau Anda dapat menekan secara global dengan:
sumber
Jika Anda ingin mendesain output dari frame data dalam sel notebook jupyter, Anda dapat mengatur gaya tampilan berdasarkan per-dataframe:
Lihat dokumentasi di sini .
sumber
Jika Anda ingin menggunakan nilai, katakan sebagai bagian dari csvfile csv.writer, angka-angka dapat diformat sebelum membuat daftar:
sumber