如何将DataFrame的列重新排列为索引的二进制矩阵?

我正在尝试转换此数据框:

data_in = {
    'dates': [2017, 2017, 2018, 2019, 2019, 2019],
    'names': ['Roger', 'Rafa', 'Roger', 'Rafa', 'Novak', 'Dom']
}
df_in = pd.DataFrame(data_in)
>>> df_in
    dates   names
0   2017    Roger
1   2017    Rafa
2   2018    Roger
3   2019    Rafa
4   2019    Novak
5   2019    Dom

进入这个二元矩阵:

>>> df_out

    Roger   Rafa    Novak   Dom
dates               
2017    1   1   0   0
2018    1   0   0   0
2019    0   1   1   1

将所有日期作为索引,所有名称作为列,如果名称出现在日期,则数据为 1,否则为 np.NaN 或 0。

我可以用它的索引和列来构建 df_out 数据框,但是你将如何获取数据?

回答

使用get_dummiesmax1如果再存在下去值0

df = pd.get_dummies(df_in.set_index('dates')['names']).groupby(level=0).max()
print (df)
       Dom  Novak  Rafa  Roger
dates                         
2017     0      0     1      1
2018     0      0     0      1
2019     1      1     1      0


以上是如何将DataFrame的列重新排列为索引的二进制矩阵?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>