使用
crosstab
将数据帧转换为
list
S:
df1 = pd.crosstab(df[48], [df[150], df[39]])
#alternative solutions
#df1 = df.groupby([48, 150, 39]).size().unstack(level=[1,2], fill_value=0)
#df1 = df.pivot_table(index=48, columns=[150, 39], aggfunc='size', fill_value=0)
print (df1)
150 0 3 8 F
39 0 3 8 1 2
48
BE0974302342 1 1 0 0 1
FR0000073843 1 1 0 0 1
FR0000076861 1 1 0 1 1
FR0000076887 1 1 1 0 1
FR0000077562 1 1 0 0 1
FR0000079147 1 1 0 1 1
FR0004034072 1 1 1 0 1
FR0004152874 1 1 0 1 1
FR0004178572 1 0 0 0 0
L = df1.reset_index().values.tolist()
print (L)
[['BE0974302342', 1, 1, 0, 0, 1],
['FR0000073843', 1, 1, 0, 0, 1],
['FR0000076861', 1, 1, 0, 1, 1],
['FR0000076887', 1, 1, 1, 0, 1],
['FR0000077562', 1, 1, 0, 0, 1],
['FR0000079147', 1, 1, 0, 1, 1],
['FR0004034072', 1, 1, 1, 0, 1],
['FR0004152874', 1, 1, 0, 1, 1],
['FR0004178572', 1, 0, 0, 0, 0]]
如果需要组合转换
MultiIndex
在列到元组列表中:
print (df1.columns.tolist())
[('0', 0), ('3', 3), ('8', 8), ('F', 1), ('F', 2)]