Saya memiliki dua Seri s1
dan s2
dengan indeks yang sama (tidak berurutan). Bagaimana cara saya menggabungkan s1
dan s2
menjadi dua kolom dalam DataFrame dan menyimpan salah satu indeks sebagai kolom ketiga?
278
Saya pikir concat
ini cara yang bagus untuk melakukan ini. Jika ada, ia menggunakan atribut nama dari Seri sebagai kolom (jika tidak, nomornya saja):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
Catatan: Ini meluas ke lebih dari 2 Seri.
pd.concat([list_of_dataframes])
vs concating berkali-kalinew_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
atau serupa.Mengapa Anda tidak menggunakan .to_frame jika keduanya memiliki indeks yang sama?
> =
v0.23
<
v0.23
sumber
Panda akan secara otomatis menyelaraskan ini berlalu dalam seri dan membuat indeks gabungan. Mereka kebetulan sama di sini.
reset_index
memindahkan indeks ke kolom.sumber
Kode contoh:
Panda memungkinkan Anda untuk membuat
DataFrame
daridict
denganSeries
sebagai nilai dan nama kolom sebagai kunci. Ketika menemukanSeries
sebagai nilai, ia menggunakanSeries
indeks sebagai bagian dariDataFrame
indeks. Penyelarasan data ini adalah salah satu fasilitas utama Pandas. Akibatnya, kecuali Anda memiliki kebutuhan lain, yang baru dibuatDataFrame
memiliki nilai duplikat. Dalam contoh di atas,data['idx_col']
memiliki data yang sama dengandata.index
.sumber
Jika saya dapat menjawab ini.
Dasar-dasar di balik konversi seri ke bingkai data adalah untuk memahami hal itu
1. Pada tingkat konseptual, setiap kolom dalam bingkai data adalah seri.
2. Dan, setiap nama kolom adalah nama kunci yang memetakan ke seri.
Jika Anda mengingat dua konsep di atas, Anda dapat memikirkan banyak cara untuk mengubah seri menjadi bingkai data. Satu solusi mudah akan seperti ini:
Buat dua seri di sini
Buat bingkai data kosong dengan hanya nama kolom yang diinginkan
Masukkan nilai seri ke dalam bingkai data menggunakan konsep pemetaan
Periksa hasil sekarang
sumber
Tidak yakin saya sepenuhnya memahami pertanyaan Anda, tetapi apakah ini yang ingin Anda lakukan?
(
index=s1.index
bahkan tidak perlu di sini)sumber
Penyederhanaan solusi berdasarkan
join()
:sumber
Saya menggunakan panda untuk mengonversi array numpy atau iseries ke dataframe lalu menambahkan dan menambahkan kolom tambahan dengan kunci sebagai 'prediksi'. Jika Anda perlu dataframe dikonversi kembali ke daftar, maka gunakan values.tolist ()
sumber