我有一个如下所示的数据框。
user cat val
u1 cat1 1
u1 cat2 2
u1 cat3 3
u2 cat1 5
u3 cat4 4
并希望像这样改造它。
user cat val(avg)
u1 cat1 1
u1 cat2 2
u1 cat3 3
u1 cat4 4
u2 cat1 5
u2 cat2 2
u2 cat3 3
u2 cat4 4
u3 cat1 3
u3 cat2 2
u3 cat3 3
u3 cat4 4
cat 右侧还有几个数字列,希望可以用 NA 填充;或者如果可能的话取平均值。
最佳答案
解决这个问题的一种方法,
l1=df['user'].unique().tolist()
l2=df['cat'].unique().tolist()
new_df = pd.DataFrame(list(itertools.product(l1,l2))).rename(columns={0:'user',1:'cat'})
new_df=pd.merge(new_df,df,on=['user','cat'],how='left')
输出:
user cat val
0 u1 cat1 1.0
1 u1 cat2 2.0
2 u1 cat3 3.0
3 u1 cat4 NaN
4 u2 cat1 5.0
5 u2 cat2 NaN
6 u2 cat3 NaN
7 u2 cat4 NaN
8 u3 cat1 NaN
9 u3 cat2 NaN
10 u3 cat3 NaN
11 u3 cat4 4.0
关于python - 在 Pandas 中添加缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947280/