gpt4 book ai didi

python - 按两列分组并使用第三列作为值而不使用pivot_table

转载 作者:行者123 更新时间:2023-12-01 07:30:14 24 4
gpt4 key购买 nike

我有以下数据框。


user movie rating
0 1 1 3

1 1 2 4

2 2 1 2

3 2 2 5

4 3 1 3

我想要的输出是


movie 1 2
user
1 3 4

2 2 5

3 3 0

如果用户尚未对电影进行评分,我需要在相应的输出列中显示“0”,否则应显示评分值。

注意:我能够使用pivot_table实现这一点,但问题是我的数据集包含超过100000列,因此我得到“Unstacked DataFrame太大,导致int32溢出”。我正在尝试使用 groupby 作为绕过此错误的替代方法。

我正在尝试以下操作,但它不包含数据帧“值”列中的值。

df.groupby(['user', 'movie']).size().unstack('movie', fill_value=0)

最佳答案

尝试使用交叉表:

pd.crosstab(df.user, df.movie, values = df.rating, aggfunc = 'first').fillna(0)
# movie 1 2
# user
# 1 3.0 4.0
# 2 2.0 5.0
# 3 3.0 0.0

要获取整数值,只需使用.astype(int),如下所示:

pd.crosstab(df.user, df.movie, values = df.rating, aggfunc = 'first').fillna(0).astype(int)
# movie 1 2
# user
# 1 3 4
# 2 2 5
# 3 3 0

关于python - 按两列分组并使用第三列作为值而不使用pivot_table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com