因此,理想的数据框将包含所有可能的因素组合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
如果发生这种情况,那么我希望缺少的组合收到val
0。
>>> 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
并将x
0y
分配给所有这些组合:
>>> 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_empty
0.277162
a x
0.324269
a y
0.435033
b y
df_desired
可以在熊猫中做到这一点吗?