user3668129:
私が使用しています python 3.7.6
次のように私は辞書を持っています:
key - string
value - list of strings
値(リスト)と同じサイズではありません。
例えば:
{'GP': ['col_1', 'col_2', 'col_3', 'col_4'],
'MIN': ['col_1', 'col_2', 'col_3', 'col_4'],
'PTS': ['col_1', 'col_2', 'col_3', 'col_4'],
'FGM': ['col_1', 'col_2', 'col_4'],
'FGA': ['col_2'],
'FG%': ['col_2', 'col_3', 'col_4'],
'3P Made': ['col_2', 'col_3'],
'AST': ['col_2', 'col_3'],
'STL': ['col_2'],
'BLK': ['col_2', 'col_3'],
'TOV': ['col_3']}
私はこの辞書をに変換したいDataframe
キーが行で、列がリストの値であり、コンテンツは1または0です(行はリスト値かを持っている場合は異なります):
col_1 col_2 col_3 col_4
GP 1 1 1 1
MIN 1 1 1 1
PTS 1 1 1 1
FGM 1 1 0 1
FGA 0 1 0 0
FG% 0 1 1 1
3P Made 0 1 1 0
AST 0 1 1 0
STL 0 1 0 0
BLK 0 1 1 0
TOV 0 0 1 0
どのように私はそれを行うことができますか?
エズレル:
使用MultiLabelBinarizer
とd.keys()
し、d.values()
辞書の:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(d.values()), index=d.keys(),columns=mlb.classes_)
print (df)
col_1 col_2 col_3 col_4
GP 1 1 1 1
MIN 1 1 1 1
PTS 1 1 1 1
FGM 1 1 0 1
FGA 0 1 0 0
FG% 0 1 1 1
3P Made 0 1 1 0
AST 0 1 1 0
STL 0 1 0 0
BLK 0 1 1 0
TOV 0 0 1 0
パンダ唯一の解決策は、しかしでslowier Series
、Series.str.join
およびSeries.str.get_dummies
:
df = pd.Series(d).str.join('|').str.get_dummies()