比较熊猫数据框的列并填充缺失值

2 python dataframe pandas

我有两个熊猫数据框如下。

list1 = [{'salt': 0.2, 'fat': 0.8}, {'fat': 1.0, 'protein': 0.9}]
df1 = pd.DataFrame(line2)
# Fill missing values with zeros
df1.fillna(0, inplace=True)

list2 = [{'salt': 0.1, 'sugar': 0.9}, {'oil': 0.9, 'sugar': 0.8, 'salt': 0.2}, {'protein': 0.9}]
df2 = pd.DataFrame(line2)
# Fill missing values with zeros
df2.fillna(0, inplace=True)
Run Code Online (Sandbox Code Playgroud)

我的两个数据框如下所示。

df1:
   fat  protein  salt
0  0.8      0.0   0.2
1  1.0      0.9   0.0

df2:
   oil  protein  salt  sugar
0  0.0      0.0   0.1    0.9
1  0.9      0.0   0.2    0.8
2  0.0      0.9   0.0    0.0
Run Code Online (Sandbox Code Playgroud)

现在我想比较 df1 和 df2 以找到丢失的主题并用零填充它们,以便数据框的最终版本如下所示。

df1:
   fat  protein  salt  oil  sugar
0  0.8      0.0   0.2   0    0
1  1.0      0.9   0.0   0    0

df2:
   oil  protein  salt  sugar  fat
0  0.0      0.0   0.1    0.9   0
1  0.9      0.0   0.2    0.8   0
2  0.0      0.9   0.0    0.0   0
Run Code Online (Sandbox Code Playgroud)

我知道在数据框中使用df1.fillna(0, inplace=True). 但是有两个数据框,我们该怎么做呢?

piR*_*red 6

使用pd.DataFrame.align确保仅沿列轴对齐。使用参数fill_value=0用零填充缺失的元素。

df1, df2 = df1.align(df2, axis=1, fill_value=0)
Run Code Online (Sandbox Code Playgroud)
df1

   fat  oil  protein  salt  sugar
0  0.8    0      0.0   0.2      0
1  1.0    0      0.9   0.0      0
Run Code Online (Sandbox Code Playgroud)
df2

   fat  oil  protein  salt  sugar
0    0  0.0      0.0   0.1    0.9
1    0  0.9      0.0   0.2    0.8
2    0  0.0      0.9   0.0    0.0
Run Code Online (Sandbox Code Playgroud)