pandas -创建值为0的新组合行

izj3ouym  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(157)

我有一个Pandas数据框
| 用户标识|音乐标识|已分级(_R)|
| - -|- -|- -|
| A级|一种|一个|
| B| B|一个|
我想自动为每个user_id和music_id添加新行,以用于那些尚未评级的用户,例如
| 用户标识|音乐标识|已分级(_R)|
| - -|- -|- -|
| A级|一种|一个|
| A级|B|第0页|
| B|一种|第0页|
| B| B|一个|
对于user_id和music_id组合对中的每一个,它们还不存在于我的Pandas Dataframe 中。
有没有办法像这样自动追加这样的行呢?

g6ll5ycj

g6ll5ycj1#

您可以对pivot_tablefill_value=0使用临时变形,以0填充缺少的值:

(df.pivot_table(index='user_id', columns='music_id',
                values='has_rating', fill_value=0)
   .stack().reset_index(name='has_rating')
 )

输出量:

user_id music_id  has_rating
0       A        a           1
1       A        b           0
2       B        a           0
3       B        b           1
fykwrbwg

fykwrbwg2#

尝试使用pd.MultiIndex.from_product()

l = ['user_id','music_id']

(df.set_index(l)
.reindex(pd.MultiIndex.from_product([df[l[0]].unique(),df[l[1]].unique()],names = l),fill_value=0)
.reset_index())

输出量:

user_id music_id  has_rating
0       A        a           1
1       A        b           0
2       B        a           0
3       B        b           1

相关问题