Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghimpunkan Nilai Identik Berturut-turut dalam Pandas DataFrame?

Bagaimana untuk Menghimpunkan Nilai Identik Berturut-turut dalam Pandas DataFrame?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-26 22:33:10860semak imbas

How to Group Consecutive Identical Values in a Pandas DataFrame?

Mengumpulkan Nilai Berturut-turut dalam Pandas DataFrame

Dalam panda, mengumpulkan data boleh menjadi tugas penting untuk analisis dan manipulasi data. Apabila berurusan dengan data berjujukan, selalunya menjadi perlu untuk mengumpulkan nilai berturut-turut yang berkongsi ciri yang sama.

Masalah:

Diberikan DataFrame dengan lajur yang mengandungi nilai berturut-turut, kumpulkan nilai ini ke dalam segmen bersebelahan yang mana nilainya kekal sama.

Sebagai contoh, jika lajur asal mengandungi nilai berikut:

[1, 1, -1, 1, -1, -1]

Output yang dikehendaki ialah:

[ 1, 1] [-1] [1] [-1, -1]

Penyelesaian:

Untuk mencapai pengelompokan ini, panda menyediakan pendekatan yang fleksibel menggunakan fungsi kumpulan mengikut. Walau bagaimanapun, hanya menggunakan groupby pada lajur itu sendiri tidak akan mencukupi. Sebaliknya, kita perlu mencipta Siri tersuai yang mengenal pasti sempadan segmen.

Kod berikut menunjukkan cara melaksanakan penyelesaian ini:

df = pd.DataFrame({'a': [1, 1, -1, 1, -1, -1]})

# Create a custom Series that identifies segment boundaries
boundaries = df['a'].ne(df['a'].shift()).cumsum()

# Group data by the segment boundaries
for i, g in df.groupby(boundaries):
    print(i)
    print(g)
    print(g.a.tolist())

Pendekatan ini memberikan nombor jujukan kepada segmen berturut-turut di mana nilai kekal tidak berubah. Menggunakan nombor ini, data kemudiannya dikumpulkan dengan sewajarnya, dan setiap kumpulan dicetak bersama dengan nilai berturut-turut yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk Menghimpunkan Nilai Identik Berturut-turut dalam Pandas DataFrame?. 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