使用列表中的值填充NaN行

时间:2017-08-27 23:43:28

标签: python pandas dataframe nan

我有一个5列的数据框。

其中三列经常缺少值(只发生在一起)

enter image description here

现在,我还有三个值列表,我想填写每列的na值。

a = [1.5,2.5,3.5]

B = [1,2,3]

C = [1,2,3]

请注意,每个列表仅包含3个值(因为每列有三行缺失值)。主表有14行。

我的第一种方法是:

  

df.where(df.notnull(),pd.Series(a),axis = 0)

但这给我带来了一个有两个问题的主表

enter image description here

1)用列表A值

填充所有三列

2)它匹配主表和列表A的行。这意味着主df用列表A的第3个值填充第一个nan值(第3行)。

2 个答案:

答案 0 :(得分:0)

您可以使用df.iloc

分配到子切片
values = np.array([a, b, c])
idx = df.iloc[:, :3].isnull().all(0).index
df.iloc[idx, :3] = values

答案 1 :(得分:-1)

您可以使用以下行 df.where(df.notnull(),pd.Series(a(0),b(0),c(0)),axis = 0)