Я ищу способ табулирования значений pandas для столбца в сводную таблицу. Я нашел способ получить то, что я хочу, но Pandas должен иметь лучший способ сделать это.
фрейм данных имеет несколько этапов теста с данными 'P' 'F' или '' для каждого тестовый прогон.
step1 = list('PPFP PFP ')
step2 = list('PFFP FPF')
step3 = list(' PPPFFPFP')
step4 = list(' PPFPF PP')
df = pd.DataFrame({'step1': step1,'step2':step2, 'step3':step3,'step4':step4})
step1 step2 step3 step4
0 P P
1 P F P P
2 F F P P
3 P P P F
4 F P
5 P F F
6 F F P
7 P P F P
8 F P P
вывод, который я ищу:
step1 step2 step3 step4
P 5 3 5 5
F 2 4 3 2
2 2 1 2
Я смог решить эту проблему, просматривая каждый столбец, выполняя value_counts, затем добавляя его к выходной массив, но это кажется неуклюжим.
df2 = pd.DataFrame(index=['P', 'F', ' '])
for i in range(len(df.columns)):
df2[df.columns.tolist()[i]] = df.iloc[:, i].value_counts(dropna=False)
Есть ли более элегантный способ выполнить sh это?