python - 如何在python中迭代非常大的数据框?
问题描述
我有一个代码,我的数据框包含近 800k 行,因此无法使用标准方法对其进行迭代。我搜索了一下,看到了 iterrows() 的方法,但我不明白如何使用。基本上这是我的代码,你能帮我如何为 iterrows() 更新它吗?
**
for i in range(len(x["Value"])):
if x.loc[i ,"PP_Name"] in ['ARK','DGD','KND','SRG','HCO','MNG','KSK','KOP','KVB','Yamanli','ÇBS','Dogancay'] :
x.loc[i,"Santral_Type"] = "HES"
elif x.loc[i ,"PP_Name"] in ['BND','BND2','TFB','TFB3','TFB4','KNT']:
x.loc[i,"Santral_Type"] = "TERMIK"
elif x.loc[i ,"PP_Name"] in ['BRS','ÇKL','DPZ']:
x.loc[i,"Santral_Type"] = "RES"
else : x.loc[i,"Santral_Type"] = "SOLAR"
**
解决方案
如何迭代非常大的数据帧——一般来说,你不需要. 您应该对整个列使用某种矢量化操作。例如,您的案例可以是map
and fillna
:
map_dict = {
'HES' : ['ARK','DGD','KND','SRG','HCO','MNG','KSK','KOP','KVB','Yamanli','ÇBS','Dogancay'],
'TERMIK' : ['BND','BND2','TFB','TFB3','TFB4','KNT'],
'RES' : ['BRS','ÇKL','DPZ']
}
inv_map_dict = {x:k for k,v in map_dict.items() for x in v}
df['Santral_Type'] = df['PP_Name'].map(inv_map_dict).fillna('SOLAR')
推荐阅读
- git - 如何在 Git Bash 中注销 GitHub 帐户?
- java - 旋转变换在处理循环中不起作用
- cmake - 带有 MPI 的 Geant4 输入未编译
- javascript - 如何修复'TypeError:无法读取 Javascript 中未定义的属性'标题'
- laravel - 出于安全原因,已禁用 file_put_contents()
- java - 退出全屏后如何重新显示状态栏+导航栏出现后不会消失
- here-maps-rest - 如何使用地址城市状态为轮流编码 REST?
- reactjs - 将类添加到嵌套映射语句中的当前(单击)元素
- mongodb - 查找 MongoDB 文档中匹配值的数量
- python - 正则表达式从字符串中过滤版本