Saya memiliki kerangka data di mana saya perlu membuat penghitung di kolom baru. Penghitung harus mulai menghitung per baris. Penghitung perlu diatur ulang ke 1 ketika nilai salah satu dari dua kolom dalam kerangka data berubah. Nilai dalam kolom adalah bilangan bulat.

Contoh DataFrame:

import pandas as pd 
data = {'Col1':[1, 2, 3, 3, 3, 3, 3, 3, 4, 4 ], 'Col2':[1, 1, 1, 1, 1, 2, 2, 2, 2, 2]}
df = pd.DataFrame(data)
print(df)

Saya mencoba ini pada awalnya, tetapi sepertinya tidak berhasil.

df['Counter'] = df.groupby((df['Col1'] != df['Col1'].shift(1)).cumsum()).cumcount()+1
df['Counter'] = df.groupby((df['Col2'] != df['Col2'].shift(1)).cumsum()).cumcount()+1
print(df)

Hasil yang diinginkan:

result = {'Col1':[1, 2, 3, 3, 3, 3, 3, 3, 4, 4 ], 'Col2':[1, 1, 1, 1, 1, 2, 2, 2, 2, 2] ,'Counter':[1, 1, 1, 2, 3, 1, 2, 3, 1, 2]}
result = pd.DataFrame(result)
print(result)

Saya sangat berharap seseorang tahu bagaimana melakukan ini. Terima kasih sebelumnya! :)

1
Newbyy 15 Mei 2020, 02:07

1 menjawab

Jawaban Terbaik

Mencoba:

df['Counter'] = df.groupby(( (df['Col1'] != df['Col1'].shift(1)) | (df['Col2'] != df['Col2'].shift(1)) ).cumsum()).cumcount()+1
2
czr 15 Mei 2020, 00:22