在处理数据量较大的表格(25万行)时,需要遍历表格中的每个值,前期使用df.loc进行遍历,不仅非常耗时,而且运行十几个小时程序经常崩溃。。。
解决方法
在网上搜索解决方案,使用df.at代替df.loc后,与之前十几个小时相比,现在几分钟就全部遍历完成!!!
特地搜索了一下loc与at的区别,loc和at都是利用index和列名进行检索,但 at更快。
df.iloc/loc的优势在于可以灵活的对数据进行 切片或选择性提取多个数值,例如:
df.loc[1:10,'weight']
df.loc[[1,3,6],'weight']
虽然 df.at/iat仅能进行 单个值的提取,但是在 对大量数据进行逐个遍历的场景下,效率才是第一生产力!
for i in range(len(str2num_list)):
for j in range(len(data[str2num_list[i]])):
if type(df.iat[j,i]) == str:
df.iat[j,i] = 0 #此处使用df.iloc将大大降低效率
Access a single value for a row/column label pair.
Similar to loc
, in that both provide label-based lookups. Use at
if you only need to get or set a single value in a DataFrame or Series.
Original: https://blog.csdn.net/Hayreen/article/details/115198880
Author: Hayreen
Title: 使用pandas遍历csv表格数据的效率问题(df.loc/iloc与df.at/iat的异同)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/754661/
转载文章受原作者版权保护。转载请注明原作者出处!