迭代系列/列的最快方法

2024-09-25 12:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我更习惯于使用for循环,但一旦获得大数据集,它们在pandas中的速度可能会变慢。我一直在寻找iterrows、iter……等例子,但我想知道是否有更快的方法。我现在拥有的是

newnames = []
names = df['name'].tolist()
for i in names:
  i = i.replace(' ','_')
  newnames.append(i)

然后我可以将newnames列表作为pandas列添加到df中,或者我应该重写现有的df['name']值吗?不太熟悉熊猫的最佳实践,因此我欢迎所有反馈。谢谢


Tags: 数据方法nameinpandasdffornames
2条回答

如果您最终想要将新名称添加到df,您可以通过以下方式直接添加:

df['newnames'] = df['name'].str.replace(' ', '_')

如果只想将name列更改为用_替换所有空格,也可以直接在原始列上执行此操作(覆盖它),如下所示:

df['name'] = df['name'].str.replace(' ', '_')

在这两种方式中,我们都是使用Pandas的矢量化操作来完成的,该操作已针对更快的执行进行了优化,而不是使用尚未优化且速度较慢的循环

只需使用矢量化字符串操作:

newnames = df['name'].str.replace(' ', '_', regex=False).tolist()

通常,对于熊猫,如果可能的话,你希望避免做循环。如果您在库中查找,通常有一些方法可以绕过循环,因此有一些关于Pandas的语法研究(除非您正在查找的是非常不标准的)

基本上,如果你想做的事情表面上需要一个for循环,那么做可能是人们经常想做的事情,它可能在图书馆里

相关问题 更多 >