Untuk menguji beberapa fungsionalitas, saya ingin membuatnya DataFrame
dari string. Katakanlah data pengujian saya terlihat seperti:
TESTDATA="""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
"""
Apa cara paling sederhana untuk membaca data itu menjadi Panda DataFrame
?
from pandas.compat import StringIO
, mencatat bahwa itu adalah kelas yang sama dengan yang ada pada Python.pd.read_table()
adalah fungsi setara, hanya sedikit lebih baik nomenklatur:df = pd.read_table(TESTDATA, sep=";")
.pandas.compat.StringIO
. Dengan begitu kita tidak perlu mengimporStringIO
secara terpisah. Namunpandas.compat
paket tersebut dianggap pribadi menurut pandas.pydata.org/pandas-docs/stable/api.html?highlight=compat sehingga meninggalkan jawaban seperti sekarang.df.to_csv(TESTDATA)
, gunakanTESTDATA.seek(0)
Metode Split
sumber
df = pd.DataFrame([x.split(';') for x in data.split('\n')[1:]], columns=[x for x in data.split('\n')[0].split(';')])
Solusi cepat dan mudah untuk pekerjaan interaktif adalah menyalin dan menempelkan teks dengan memuat data dari clipboard.
Pilih konten string dengan mouse Anda:
Dalam penggunaan shell Python
read_clipboard()
Gunakan pemisah yang sesuai:
sumber
Jawaban ini berlaku ketika string dimasukkan secara manual, bukan ketika itu dibaca dari suatu tempat.
CSV lebar variabel tradisional tidak dapat dibaca untuk menyimpan data sebagai variabel string. Khusus untuk digunakan di dalam
.py
file, pertimbangkan data yang dipisahkan dengan pipa dengan lebar tetap. Berbagai IDE dan editor mungkin memiliki plugin untuk memformat teks yang dipisahkan pipa menjadi tabel yang rapi.Menggunakan
read_csv
Simpan yang berikut dalam modul utilitas, mis
util/pandas.py
. Contoh disertakan dalam dokumentasi fungsi.Alternatif tidak bekerja
Kode di bawah ini tidak berfungsi dengan baik karena menambahkan kolom kosong di sisi kiri dan kanan.
Adapun
read_fwf
, itu tidak benar-benar menggunakan begitu banyak kwarg opsional yangread_csv
menerima dan menggunakan. Karena itu, tidak boleh digunakan sama sekali untuk data yang dipisahkan oleh pipa.sumber
read_fwf
membutuhkan lebih banyakread_csv
argumen daripada yang didokumentasikan, tetapi memang benar bahwa beberapa tidak memiliki efek .Cara paling sederhana adalah menyimpannya ke file temp dan kemudian membacanya:
Cara yang benar untuk membuat file temp: Bagaimana saya bisa membuat file tmp dengan Python?
sumber