我有一个稀疏的 DataFrame:
df = pd.DataFrame([[1, 1],[1, 2], [2,1], [2,3], [3,4]], columns=['userId', 'movieId'])
看起来像这样:
userId movieId
0 1 1
1 1 2
2 2 1
3 2 3
4 3 4
我想转换此表,使其看起来像这样:
movieId
userId 1 2 3 4
1 1 1 0 0
2 1 0 1 0
3 0 0 0 1
最佳答案
您可以调用.pivot
在 df 上传递索引、列和值的相关列。在这里,我创建了一个 bool df,因为在没有值的情况下将引入 NaN 值,并将 dtype
转换为 int
以生成您想要的内容:
In [9]:
(df.pivot(index='userId', columns='movieId', values='movieId') > 0).astype(int)
Out[9]:
movieId 1 2 3 4
userId
1 1 1 0 0
2 1 0 1 0
3 0 0 0 1
这是中间数据透视表的样子:
In [11]:
df.pivot(index='userId', columns='movieId', values='movieId')
Out[11]:
movieId 1 2 3 4
userId
1 1 2 NaN NaN
2 1 NaN 3 NaN
3 NaN NaN NaN 4
关于python - 将数据透视应用于 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046907/