Ben şöyle bir DataFrame
var:Bir veri çerçevesini satırların değerlerini kullanarak nasıl çözülür?
DataFrame
'unravel', ve sınıf hakkında bilgi kaybetmek ama
extra_teaching
hakkında bilgi tutmak istiyorum, bu yüzden her biri için bir satır ile bitirmek
class passed failed extra_teaching
A11 1 2 0.5
A12 2 1 0.7
geçen bireysel öğrenci.
Yani DataFrame
bu benzeyen sonunda olmalıdır:
pass extra_teaching
1 0.5
0 0.5
0 0.5
1 0.7
1 0.7
0 0.7
ben nasıl hiçbir fikrim yok yeni DataFrame
satır ekleme elle iterrows()
kullanarak ve belki hariç pandas
bunu yapmanın - Bir var herkes etmiştir neat yol?
GÜNCELLEME: Bu çalıştı
, çok şık olmasa da iş gibi görünüyor:
temp = []
df = df.set_index('class')
for idx in df.index:
row = df.loc[idx]
t = {'class': idx, 'extra_teaching': row['extra_teaching']}
for i in range(0, int(row['passed'])):
t['pass'] = 1
temp.append(t)
for i in range(0, int(row['failed'])):
t['pass'] = 0
temp.append(t)
df_exploded = pd.DataFrame(temp)
yapmak sınıfını senin indeksi, her elemanın üzerinde döngü, toplam geçişi hesaplamak ed + her satır için başarısız oldu ve ardından her satır için bir veri çerçevesi oluşturdu (ör. her sınıf) ve hepsini birleştirin. Geçiş vektörünü sakladığınız her bir sınıf için bir sütun tanıtmak isteyebilirsiniz, ör. [1 0 0] ve [1 1 0] bu durumda. Oradan basit olmalı – tschm
Üç sütun, 'class',' geçti 've' başarısız 'mantıksal olarak' pass''a nasıl çevrilir? – Stefan
@Stefan, 'sınıfı' görmezden geliyor, sadece verilerin ne olduğunu açıklamak için var. "geçti" her zaman "pass = 1" anlamına gelir, "başarısız" her zaman "pass = 0" anlamına gelir. – Richard