迭代的最快方法 pandas series/column
fastest way to iterate pandas series/column
我更习惯使用 for 循环,但是一旦您获得大量数据,它们在 pandas 中可能会变慢。我一直在寻找 iterrows、iter... 等示例,但想知道是否有更快的方法。我现在拥有的是
newnames = []
names = df['name'].tolist()
for i in names:
i = i.replace(' ','_')
newnames.append(i)
然后我可以将新名称列表作为 pandas 列添加到 df 中,或者我应该重写现有的 df['name'] 值吗?不太熟悉 pandas 最佳实践,所以我欢迎所有反馈。谢谢
只需使用矢量化字符串操作:
newnames = df['name'].str.replace(' ', '_', regex=False).tolist()
通常,对于 Pandas,您希望尽可能避免循环。如果您在库中查找,通常有一些方法可以绕过循环,因此 Pandas 有一定程度的语法研究(除非您要查找的内容非常不标准)。
基本上,如果你想做的事情表面上需要一个 for 循环,而这样做可能是人们想要经常做的事情,它可能在图书馆里。
如果您最终想将新名称添加到 df
,您可以直接通过以下方式进行:
df['newnames'] = df['name'].str.replace(' ', '_')
如果只是想把name
列全部替换成_
,也可以直接在原来的列上做(覆盖),如下:
df['name'] = df['name'].str.replace(' ', '_')
在这两种方式中,我们都使用 Pandas' 向量化操作来执行此操作,该操作已针对更快的执行进行了优化,而不是使用未经优化且速度较慢的循环。
我更习惯使用 for 循环,但是一旦您获得大量数据,它们在 pandas 中可能会变慢。我一直在寻找 iterrows、iter... 等示例,但想知道是否有更快的方法。我现在拥有的是
newnames = []
names = df['name'].tolist()
for i in names:
i = i.replace(' ','_')
newnames.append(i)
然后我可以将新名称列表作为 pandas 列添加到 df 中,或者我应该重写现有的 df['name'] 值吗?不太熟悉 pandas 最佳实践,所以我欢迎所有反馈。谢谢
只需使用矢量化字符串操作:
newnames = df['name'].str.replace(' ', '_', regex=False).tolist()
通常,对于 Pandas,您希望尽可能避免循环。如果您在库中查找,通常有一些方法可以绕过循环,因此 Pandas 有一定程度的语法研究(除非您要查找的内容非常不标准)。
基本上,如果你想做的事情表面上需要一个 for 循环,而这样做可能是人们想要经常做的事情,它可能在图书馆里。
如果您最终想将新名称添加到 df
,您可以直接通过以下方式进行:
df['newnames'] = df['name'].str.replace(' ', '_')
如果只是想把name
列全部替换成_
,也可以直接在原来的列上做(覆盖),如下:
df['name'] = df['name'].str.replace(' ', '_')
在这两种方式中,我们都使用 Pandas' 向量化操作来执行此操作,该操作已针对更快的执行进行了优化,而不是使用未经优化且速度较慢的循环。