因此,理想的数据框将包含所有可能的因素组合c1和c2:
>>> c1 = ['a','a','b','b']
>>> c2 = list('xy'*2)
>>> val = np.random.rand(4)
>>> df_ideal = pd.DataFrame({'c1':c1, 'c2':c2, 'val':val})
>>> df_ideal
c1 c2 val
0 a x 0.277162
1 a y 0.324269
2 b x 0.156026
3 b y 0.435033
但是,我事先不知道是否会丢失任何组合,因此我最终可能会得到这样的数据框(b x缺少组合):
>>> df
c1 c2 val
0 a x 0.277162
1 a y 0.324269
3 b y 0.435033
如果发生这种情况,那么我希望缺少的组合收到val0。
>>> df_desired
c1 c2 val
0 a x 0.277162
1 a y 0.324269
2 b x 0
3 b y 0.435033
一种方法是创建一个数据框,其中包含 、 with 的所有组合a,b并将x0y分配给所有这些组合:
>>> df_empty
c1 c2 val
0 a x 0
1 a y 0
2 b x 0
3 b y 0
然后,在读取数据框之后df,我可以告诉 pandas 将可用元素插入到(对应的行中、对应的行和对应的val行中)的适当行中。这会给我.df_empty0.277162a x0.324269a y0.435033b ydf_desired
可以在熊猫中做到这一点吗?