假设我们有以下数据框,其中某个列具有多个值:
categories
0 - ["A", "B"]
1 - ["B", "C", "D"]
2 - ["B", "D"]
我们怎样才能得到这样的表?
"A" "B" "C" "D"
0 - 1 1 0 0
1 - 0 1 1 1
2 - 0 1 0 1
注意:我不一定需要新的数据框,我想知道如何将此类数据框转换为更适合机器学习的格式。
假设我们有以下数据框,其中某个列具有多个值:
categories
0 - ["A", "B"]
1 - ["B", "C", "D"]
2 - ["B", "D"]
我们怎样才能得到这样的表?
"A" "B" "C" "D"
0 - 1 1 0 0
1 - 0 1 1 1
2 - 0 1 0 1
注意:我不一定需要新的数据框,我想知道如何将此类数据框转换为更适合机器学习的格式。
如果[0, 1, 2]
是数字标签而不是索引,则pandas.DataFrame.pivot_table
有效:
在 []: 数据 = pd.DataFrame.from_records( [[0, 'A'], [0, 'B'], [1, 'B'], [1, 'C'], [1, 'D'], [2, 'B'], [ 2, 'D']], columns=['number_label', 'category']) data.pivot_table(index=['number_label'], columns=['category'], aggfunc=[len], fill_value=0)
出去[]: 连 类别 ABCD number_label 0 1 1 0 0 1 0 1 1 1 2 0 1 0 1
这篇博文很有帮助。
如果[0, 1, 2]
是索引,则collections.Counter
很有用:
在 []: data2 = pd.DataFrame.from_dict( {'类别':{0:['A','B'],1:['B','C','D'],2:['B','D']}}) data3 = data2['categories'].apply(collections.Counter) pd.DataFrame.from_records(data3).fillna(value=0)
出去[]: A B C D 0 1 1 0 0 1 0 1 1 1 2 0 1 0 1