用数组替换pandas列值

时间:2017-10-15 21:43:03

标签: python pandas

我有一个数组:

([ 137.55021238,  125.30017675,  130.20181675,  109.47348838])

我需要数组值来替换b列,索引号保持不变:

Index    a         b         
0       0.671399 Nan
35      0.446172 Nan
63      0.614758 Nan
72      0.634448 Nan

我尝试使用替换,但它没有用。是否有另一种方法可以在不将数组转换为数据框并合并的情况下执行此操作?

1 个答案:

答案 0 :(得分:4)

vals = [137.55021238, 125.30017675, 130.20181675, 109.47348838]

选项1
直接分配。

df['b'] = vals
print(df)
              a           b
Index
0      0.671399  137.550212
35     0.446172  125.300177
63     0.614758  130.201817
72     0.634448  109.473488

选项2
df.assign

df = df.assign(b=vals)
print(df)
              a           b
Index
0      0.671399  137.550212
35     0.446172  125.300177
63     0.614758  130.201817
72     0.634448  109.473488

选项3
df.fillna

df.b = df.b.fillna(pd.Series(vals, index=df.index))
print(df)
              a           b
Index
0      0.671399  137.550212
35     0.446172  125.300177
63     0.614758  130.201817
72     0.634448  109.473488

如果您的值为Nan(字符串)而不是NaN(浮点数),则可以使用df.replace转换它:

df = df.replace('Nan', np.nan)