使用数组替换 pandas 列的值

4

我有一个数组:

([ 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

我尝试使用replace,但它没有起作用。有没有其他方法可以做到这一点而不将数组转换为数据框并合并?


为什么这个不起作用?df['b'] = [137.55021238,125.30017675,130.20181675,109.47348838] - cs95
哦,糟糕。我高估了这个问题,它有一个如此简单的解决方案。谢谢@coldspeed。我应该删除我发布的这个问题吗? - Adam Schroeder
我认为这可能是一个重复的问题,但是可以不管它。 - cs95
1个回答

8
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

Option 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)

谢谢。我会在10分钟内接受您的答案。 - Adam Schroeder
@piRSquared 写作业时想到了你 :) - cs95

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接