簡體   English   中英

比較pandas數據幀的列並填充缺失值

[英]Compare columns of pandas dataframes and fill missing values

我有兩個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)

我的兩個數據框如下所示。

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

現在我想比較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

我知道使用df1.fillna(0, inplace=True)在數據df1.fillna(0, inplace=True)執行此操作。 但是有兩個數據幀,我們怎么做呢?

使用pd.DataFrame.align確保僅沿列軸對齊。 使用參數fill_value=0以零填充缺少的元素。

df1, df2 = df1.align(df2, axis=1, fill_value=0)

df1

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

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

使用df.reindex 不是那么優雅,仍然會發布,因為piR這次沒有給你這么多的選擇

c = df1.columns | df2.columns
df1 = df1.reindex(columns=c).fillna(0)
df2 = df2.reindex(columns=c).fillna(0)

df1

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


df2

   fat  oil  protein  salt  sugar
0  0.0  0.0      0.0   0.1    0.9
1  0.0  0.9      0.0   0.2    0.8
2  0.0  0.0      0.9   0.0    0.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM