Jeśli [0, 1, 2]
są etykietami numerycznymi i nie są indeksem, to pandas.DataFrame.pivot_table
działa:
W []:
data = pd.DataFrame.from_records (
[[0, „A”], [0, „B”], [1, „B”], [1, „C”], [1, „D”], [2, „B”], [ 2, „D”]],
kolumny = [„numer_etykiety”, „kategoria”])
data.pivot_table (index = ['number_label'], columns = ['category'], aggfunc = [len], fill_value = 0)
Na zewnątrz[]:
Len
kategoria ABCD
numer_etykiety
0 1 1 0 0
1 0 1 1 1
2 0 1 0 1
Ten post na blogu był pomocny: http://pbpython.com/pandas-pivot-table-explained.html
Jeśli [0, 1, 2]
jest indeksem, to collections.Counter
jest przydatne:
W []:
data2 = pd.DataFrame.from_dict (
{„kategorie”: {0: [„A”, „B”], 1: [„B”, „C”, „D”], 2: [„B”, „D”]}})
data3 = data2 [„kategorie”]. zastosowanie (collections.Counter)
pd.DataFrame.from_records (data3) .fillna (wartość = 0)
Na zewnątrz[]:
ABCD
0 1 1 0 0
1 0 1 1 1
2 0 1 0 1