我想合并 pd.DataFrame 和 pd.Series,包括所有丢失的数据。
print(x)
>>> movie rating user
0 100 1 1
1 200 4 1
2 300 3 1
3 100 5 2
4 200 3 2
5 300 2 3
x 是 pd.DataFrame。
print(y)
>>> 0 100
1 200
2 300
3 400
y 是 pd.Series。 我想将此数据用作 x 中的 movie 列。 使用 x 和 y,我希望得到如下结果:
movie rating user
0 100 1.0 1
1 200 4.0 1
2 300 3.0 1
3 400 NaN 1
4 100 5.0 2
5 200 3.0 2
6 300 NaN 2
7 400 NaN 2
8 100 NaN 3
9 200 NaN 3
10 300 2.0 3
11 400 NaN 3
组合数据基本上应该是 x,每个用户的 movie=[100,200,300,400] 列就像 y 一样。
请您参考如下方法:
unstack + stack + reindex
x.set_index(['user','movie']).rating.unstack().\
reindex(columns=y).\
stack(dropna=False).\
reset_index(name='rating')
Out[40]:
user movie rating
0 1 100 1.0
1 1 200 4.0
2 1 300 3.0
3 1 400 NaN
4 2 100 5.0
5 2 200 3.0
6 2 300 NaN
7 2 400 NaN
8 3 100 NaN
9 3 200 NaN
10 3 300 2.0
11 3 400 NaN
