Ini mungkin pertanyaan sederhana, tapi saya tidak tahu bagaimana melakukan ini. Katakanlah saya memiliki dua variabel sebagai berikut.
a = 2
b = 3
Saya ingin membuat DataFrame dari ini:
df2 = pd.DataFrame({'A':a,'B':b})
Ini menghasilkan kesalahan:
ValueError: Jika menggunakan semua nilai skalar, Anda harus melewati indeks
Saya mencoba ini juga:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
Ini memberikan pesan kesalahan yang sama.
index=0
, tetapi itu dapat menyebabkan penyalahgunaan yang tidak disengaja (berpikir bahwa satu kamus entah bagaimana dapat membuat dataframe multi-baris)Anda juga dapat menggunakan
pd.DataFrame.from_records
mana yang lebih nyaman ketika Anda sudah memiliki kamus di tangan:Anda juga dapat mengatur indeks, jika diinginkan, dengan:
sumber
Anda harus membuat seri panda terlebih dahulu. Langkah kedua adalah mengubah seri panda menjadi bingkai data panda.
Anda bahkan dapat memberikan nama kolom.
sumber
pd.Series(data).to_frame('ColumnName')
lebih pendek, meskipun padanan ini mungkin lebih langsung:pd.DataFrame.from_dict(data, orient='index', columns=['ColumnName'])
Anda dapat mencoba membungkus kamus Anda ke dalam daftar
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
sumber
Mungkin Series akan menyediakan semua fungsi yang Anda butuhkan:
DataFrame dapat dianggap sebagai kumpulan dari Seri maka Anda dapat:
Menggabungkan beberapa seri menjadi satu bingkai data (seperti dijelaskan di sini )
Tambahkan variabel Seri ke dalam kerangka data yang ada ( contoh di sini )
sumber
Anda harus memberikan iterables sebagai nilai untuk kolom DataFrame Pandas:
sumber
Saya memiliki masalah yang sama dengan array numpy dan solusinya adalah meratakan mereka:
sumber
Jika Anda ingin mengonversi kamus skalar, Anda harus memasukkan indeks:
Meskipun indeks tidak diperlukan untuk kamus daftar, ide yang sama dapat diperluas ke kamus daftar:
Tentu saja, untuk kamus daftar, Anda dapat membuat kerangka data tanpa indeks:
sumber
Kamu bisa mencoba:
Dari dokumentasi pada argumen 'orient': Jika kunci dict yang dikirimkan harus berupa kolom dari DataFrame yang dihasilkan, berikan 'kolom' (default). Kalau tidak, jika kunci harus baris, lewati 'indeks'.
sumber
code
kata-kata Sangat Penting untuk dicetak tebal , huruf - huruf kurang penting Italic Juga gunakan daftar jika perluSihir panda sedang bekerja. Semua logika keluar.
Pesan kesalahan
"ValueError: If using all scalar values, you must pass an index"
Mengatakan Anda harus melewati indeks.Ini tidak berarti lulus indeks membuat panda melakukan apa yang Anda inginkan
Saat Anda melewati indeks, panda akan memperlakukan kunci kamus Anda sebagai nama kolom dan nilai-nilai sebagai apa yang seharusnya berisi kolom untuk masing-masing nilai dalam indeks.
Melewati indeks yang lebih besar:
Indeks biasanya secara otomatis dihasilkan oleh kerangka data ketika tidak ada yang diberikan. Namun, panda tidak tahu berapa banyak baris
2
dan yang3
Anda inginkan. Namun Anda bisa lebih eksplisit tentang hal ituIndeks bawaannya adalah 0.
Saya akan merekomendasikan selalu melewati kamus daftar ke konstruktor dataframe saat membuat dataframe. Lebih mudah dibaca untuk pengembang lain. Panda memiliki banyak peringatan, jangan buat pengembang lain harus ahli dalam semuanya untuk membaca kode Anda.
sumber
input tidak harus berupa daftar catatan - itu bisa berupa kamus tunggal juga:
Yang tampaknya setara dengan:
sumber
Ini karena DataFrame memiliki dua dimensi intuitif - kolom dan baris.
Anda hanya menentukan kolom menggunakan tombol kamus.
Jika Anda hanya ingin menentukan data satu dimensi, gunakan Seri!
sumber
Konversi Kamus ke Bingkai Data
Beri nama baru ke Kolom
sumber
Jika Anda memiliki kamus, Anda dapat mengubahnya menjadi bingkai data panda dengan baris kode berikut:
sumber
Lewati dikt pada daftar:
sumber