使用列表更新基于另一个数据框的列

时间:2021-01-27 12:55:58

标签: python pandas

我正在学习如何使用 Pandas DataFrames,但我不知道我是否以最好的方式解决了这个问题。

我有一个这样的数据框:

<头>
别名 标识符 价值
dpxcp 0001 NaN
defpo 0002 NaN

我想使用包含这两个信息的列表更新基于标识符的值。

我的列表(标识符、值):datas = [('0001', 121), ('0002', 17673)]

我可以使用循环来做到这一点。

for data in datas:
    df.loc[(df.identifier == data[0]), 'value'] = data[1]

但我不知道这是否是最好的方法。我有一种感觉,使用这种方式,因为我使用的数据越多,更新 DataFrame 的时间就越长。

1 个答案:

答案 0 :(得分:0)

使用 Series.map 将元组列表转换为 dictionary 以避免循环:

datas = [('0001', 121), ('0002', 17673)]

df['Value'] = df.Identifier.map(dict(datas))
print (df)
   Alias Identifier  Value
0  dpxcp       0001    121
1  defpo       0002  17673