我正在学习如何使用 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 的时间就越长。
答案 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