Python tidak dapat mengubah objek menjadi string

Jika Anda ingin menyimpan dan memuat data gambar dalam sebuah string, Anda dapat menggunakan kode ini.
private string SaveImage(Image image)
{
    using (MemoryStream m = new MemoryStream())
    {
        image.Save(m, image.RawFormat);

        byte[] imageBytes = m.ToArray();

        return Convert.ToBase64String(imageBytes);
    }
}

private Image LoadImage(string base64)
{
    byte[] bytes = Convert.FromBase64String(base64);

    Image image;

    using (MemoryStream ms = new MemoryStream(bytes))
    {
        image = Image.FromStream(ms);
    }

    return image;
}
Kesalahan ini biasanya terjadi saat Anda mencoba mengonversi string menjadi pelampung di panda, namun string berisi satu atau beberapa hal berikut ini
  • Spasi
  • Koma
  • Karakter spesial

Saat ini terjadi, Anda harus terlebih dahulu menghapus karakter ini dari string sebelum mengubahnya menjadi pelampung

Contoh berikut menunjukkan cara mengatasi kesalahan ini dalam praktiknya

Cara Mereproduksi Kesalahan

Misalkan kita memiliki DataFrame pandas berikut

import pandas as pd

#create DataFrame
df = pd.DataFrame({'store': ['A', 'B', 'C', 'D'],
                   'revenue': ['$400.42', '$100.18', '$243.75', '$194.22']})

#view DataFrame
print(df)

  store  revenue
0     A  $400.42
1     B  $100.18
2     C  $243.75
3     D  $194.22

#view data type of each column
print(df.dtypes)

store      object
revenue    object
dtype: object
_

Sekarang misalkan kita mencoba mengonversi kolom pendapatan dari string menjadi float

#attempt to convert 'revenue' from string to float
df['revenue'] = df['revenue'].astype(float)

ValueError: could not convert string to float: '$400.42' 

Kami menerima kesalahan karena kolom pendapatan berisi tanda dolar di string

Cara Memperbaiki Kesalahan

Cara untuk mengatasi error ini adalah dengan menggunakan fungsi replace() untuk mengganti tanda dolar di kolom pendapatan dengan apa pun sebelum melakukan konversi

#convert revenue column to float
df['revenue'] = df['revenue'].apply(lambda x: float(x.split()[0].replace('$', '')))

#view updated DataFrame
print(df)

  store  revenue
0     A   400.42
1     B   100.18
2     C   243.75
3     D   194.22

#view data type of each column
print(df.dtypes)

store       object
revenue    float64
dtype: object

Perhatikan bahwa kami dapat mengonversi kolom pendapatan dari string menjadi float dan kami tidak menerima kesalahan apa pun karena kami menghapus tanda dolar sebelum melakukan konversi

Dalam tutorial Analisis Data Panda hari ini saya ingin membahas dasar-dasar konversi kolom Python DataFrame ke string

Kami akan fokus pada beberapa kasus penggunaan utama di sini

  1. Mengubah kolom tertentu menjadi string menggunakan metode astype()
  2. Mengekspor DataFrame ke objek string
  3. Mengubah objek Datetime menjadi string

Data contoh

Kami akan mulai dengan membuat beberapa data pengujian untuk Anda ikuti bersama latihan ini

#import Pandas
import pandas as pd

#Define data dictionary
cand_dict = {'office_id' : [ 'ny', 2,3],
    'city': ['nyc', 'boston', 'austin'],
              'num_candidates': [10,20,58]}

#Initialize DataFrame
candidates = pd.DataFrame(cand_dict)
_

Mari cari tahu masing-masing tipe data dari kolom DataFrame kita

candidates.dtypes

Hasilnya akan

office_id         object
city              object
num_candidates     int64
dtype: object
_

Kolom office_id menyertakan bilangan bulat numerik dan karakter teks, karenanya diberi tipe data objek

Mengonversi kolom DataFrame menjadi string

Mari kita asumsikan bahwa kita ingin menggabungkan office_id dan kolom kota

candidates['city_id'] = candidates['office_id'] + '_'+ candidates['city']

Ini akan membuat kesalahan Jenis, karena kami mencoba menggabungkan bilangan bulat dan string

TypeError: unsupported operand type(s) for +: 'int' and 'str'
_

Mari kita lanjutkan dan ubah city_id menjadi tipe data string lalu gabungkan kolom dengan mudah

candidates['office_id'] = candidates['office_id'].astype('string')
candidates['city_id'] = candidates['office_id'] + '_'+ candidates['city']

print(candidates.head())
_

Kami akan mendapatkan kolom city_id di DataFrame kami

office_idcitynum_candidatescity_id0nynyc10ny_nyc12boston202_boston23austin583_austin

Keluarkan objek DataFrame ke string

Kami menemukan sebelumnya bahwa bidang kota ditafsirkan sebagai objek Pandas. Kita dapat mentransmisikan setiap kolom ke tipe data tertentu dengan mengirimkan kamus pasangan kolom dan tipe yang cocok seperti yang disorot di bawah ini

candidates.astype({'city':'string', 'num_candidates':'int32'}).dtypes

Dan hasil yang akan kita dapatkan adalah

city ​​string num_candidates int32 dtype. obyek

Ekspor Pandas Dataframe ke string menggunakan to_string()

Ini sebuah contoh

# Saving a DataFrame column
print(candidates['city'].to_string())

#Entire DataFrame
print(candidates.to_string())

Ubah Datetime menjadi string

Dalam contoh kami berikutnya, kami akan menggunakan Python untuk mengubah kolom yang berisi objek tipe Datetime menjadi string

Kami pertama-tama akan menghasilkan beberapa DataFrame sederhana

import pandas as pd
week = pd.date_range('2022-10-10', periods = 7, freq = 'd')
sales = [120, 130, 150, 167, 180, 120, 150 ]
sales_df = pd.DataFrame (dict(week = week, sales=sales))

sales_df.dtypes

Akan kembali

week     datetime64[ns]
sales             int64
dtype: object

Sekarang kita dapat menggunakan metode astype seperti yang ditunjukkan di atas untuk mengembalikan sebuah seri

candidates.dtypes
0

Perhatikan bahwa konversi ke string tidak akan diabadikan dalam DataFrame asli Anda. Anda dapat dengan mudah mempertahankan perubahan Anda dengan membuat DataFrame baru

candidates.dtypes
1

Ubah format Datetime dan konversikan ke string

Dalam contoh berikutnya kita hanya akan melanjutkan dan memodifikasi format kolom datetime menggunakan fomatter srftime. Dalam contoh ini kami akan menggunakan data yang telah kami hasilkan sebelumnya

candidates.dtypes
2

Kami akan mendapatkan hasil berikut

Python tidak dapat mengubah objek menjadi string

Dengan cara yang sama Anda dapat memodifikasi nilai datetime ke format lain, termasuk tahun, bulan, hari, jam, menit, dan sebagainya.

Contoh Mengganti nama kolom DataFrame

Persyaratan umum adalah mengganti nama kolom setelah dilemparkan ke tipe data baru. Berikut cuplikan singkat yang dapat Anda gunakan sebagai contoh

candidates.dtypes
_3

Mengubah kolom Pandas menjadi int

Beberapa pembaca telah bertanya tentang proses sederhana untuk mengonversi kolom yang berisi data numerik dari tipe string ke integer. Ingin mengarahkan Anda ke tutorial ini yang membantu memahami cara mentransmisikan kolom ke int di Pandas

Bisakah kita mengonversi objek menjadi string dengan Python?

Semuanya adalah objek di Python. Jadi semua objek bawaan dapat dikonversi menjadi string menggunakan metode str() dan repr() .

Apa yang tidak dapat diubah menjadi string dengan Python?

Semua tipe dapat dikonversi dalam String dengan python menggunakan str.

Bagaimana cara mengubah tipe data dari objek ke string?

Kesimpulan. Di Java, objek dapat diubah menjadi string dengan menggunakan metode toString() atau dengan menggunakan kelas objek String. nilai(objek) metode .

Bagaimana Anda mengonversi objek baris menjadi string dengan Python?

Python adalah tentang objek sehingga objek dapat langsung dikonversi menjadi string menggunakan metode seperti str() dan repr() . Metode Str() digunakan untuk konversi semua objek bawaan menjadi string. Demikian pula, metode repr() sebagai bagian dari metode konversi objek juga digunakan untuk mengubah objek kembali menjadi string.