Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah anda mengubah Pandas DataFrame yang luas kepada format panjang dengan nilai yang mewakili pembolehubah dan tarikh?

Bagaimanakah anda mengubah Pandas DataFrame yang luas kepada format panjang dengan nilai yang mewakili pembolehubah dan tarikh?

Susan Sarandon
Susan Sarandonasal
2024-11-14 11:17:02229semak imbas

How do you transform a wide Pandas DataFrame into a long format with values representing variables and dates?

Membentuk Semula daripada Data Luas:

Dalam bidang manipulasi data, membentuk semula set data yang luas kepada yang panjang adalah operasi penting untuk data integrasi dan analisis. Pertimbangkan senario berikut:

Anda mempunyai bingkai data dalam panda dengan nilai harian untuk pembolehubah AA, BB dan CC, diindeks mengikut tarikh.

+---------+----+----+----+
| date     | AA | BB | CC |
+---------+----+----+----+
| 05/03    | 1  | 2  | 3  |
| 06/03    | 4  | 5  | 6  |
| 07/03    | 7  | 8  | 9  |
| 08/03    | 5  | 7  | 1  |
+---------+----+----+----+

Anda ingin menukar data ini menjadi format di mana setiap baris mewakili pembolehubah dan tarikh, seperti yang dilihat di bawah:

+------+---------+--------+
| var  | date    | value  |
+------+---------+--------+
| AA   | 05/03   | 1      |
| AA   | 06/03   | 4      |
| AA   | 07/03   | 7      |
| AA   | 08/03   | 5      |
| BB   | 05/03   | 2      |
| BB   | 06/03   | 5      |
| BB   | 07/03   | 8      |
| BB   | 08/03   | 7      |
| CC   | 05/03   | 3      |
| CC   | 06/03   | 6      |
| CC   | 07/03   | 9      |
| CC   | 08/03   | 1      |
+------+---------+--------+

Penstrukturan semula ini adalah tugas biasa dalam penyepaduan data dan akan membolehkan anda menggabungkan bingkai data ini dengan yang lain dengan tarikh yang sepadan dan nama lajur awal (AA, BB, CC).

Kaedah: Fungsi Lebur Panda

Nasib baik, panda menawarkan kaedah mudah untuk melakukan transformasi ini: pandas.melt atau DataFrame.melt. Berikut ialah contoh:

import pandas as pd

df = pd.DataFrame({
    'date' : ['05/03', '06/03', '07/03', '08/03'],
    'AA' : [1, 4, 7, 5],
    'BB' : [2, 5, 8, 7],
    'CC' : [3, 6, 9, 1]
})
df.set_index('date', inplace=True)

dfm = df.reset_index().melt(id_vars='date')

Ini akan mengubah bingkai data anda kepada format panjang yang diingini:

     date variable  value
0   05/03       AA      1
1   06/03       AA      4
2   07/03       AA      7
3   08/03       AA      5
4   05/03       BB      2
5   06/03       BB      5
6   07/03       BB      8
7   08/03       BB      7
8   05/03       CC      3
9   06/03       CC      6
10  07/03       CC      9
11  08/03       CC      1

Atas ialah kandungan terperinci Bagaimanakah anda mengubah Pandas DataFrame yang luas kepada format panjang dengan nilai yang mewakili pembolehubah dan tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn