如何高效地将字典数据批量添加到Pandas DataFrame的所有行?
更高效地给Pandas DataFrame批量添加字典列
嘿,这个问题我太熟了!你原来的循环方法虽然能实现需求,但确实有更简洁高效的向量化操作方式,不用挨个遍历字典的键值对——尤其是当你的DataFrame行数很多或者字典里的键值对数量不少时,这些方法的优势会更明显。
给你分享几个常用的高效方法:
方法1:使用df.assign()(最简洁)
assign()方法可以直接接受字典作为参数(通过**解包),一行代码就能完成所有新列的添加,而且默认返回一个新的DataFrame(不想修改原数据的话特别友好):
import pandas as pd df = pd.DataFrame({'age' : [1, 2, 3],'name' : ['Foo', 'Bar', 'Barbie']}) d = {"blah":42,"blah-blah":"bar"} # 一行搞定批量添加 df = df.assign(**d)
方法2:使用pd.concat()
把字典转换成和原DataFrame同索引的小DataFrame,然后按列拼接,逻辑非常直观:
# 将字典转为匹配原df索引的DataFrame,再拼接 df = pd.concat([df, pd.DataFrame(d, index=df.index)], axis=1)
方法3:直接批量赋值(修改原DataFrame)
如果你想直接在原DataFrame上修改,可以通过loc批量指定列并赋值,Pandas会自动把字典里的标量值广播到所有行:
# 直接给原df添加新列并赋值 df.loc[:, d.keys()] = pd.Series(d)
这几种方法都避免了循环操作,利用Pandas的向量化特性,执行效率比遍历字典要高很多,而且代码更简洁易读。
内容的提问来源于stack exchange,提问作者Rutger Hofste
相关产品推荐
相关产品推荐

