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