python - 为什么不能在熊猫的 for 循环中使用 loc(index+1,'col name')?
问题描述
我想计算python中行之间的差异。我知道我可以使用 diff() 来做到这一点。但我想尝试使用“for循环”。我尝试以下代码,但出现错误“KeyError:2”
if pdf.loc[i+1,'A'] != pdf.loc[i,'A']:
如果我想做以下计算,我该怎么做,请帮忙。
打印(loc[2,'A'] * loc[1,'A'] + 3)
打印(loc[3,'A'] * loc[2,'A'] + 3)
打印(loc[4,'A'] * loc[3,'A'] + 3)
...
打印(loc[i,'A'] * loc[i-1,'A'] + 3)
显示“KeyError:2”错误的代码
for i, dura in pdf.iterrows():
if i < pdf.shape[0]:
if pdf.loc[i+1,'A'] != pdf.loc[i,'A']:
print("a")
else:
print("b")
else:
print("finished")
解决方案
iterrows()
是遍历 pandas 数据框的最慢方法之一。改为使用itertuples()
(还有其他更快的选项)
for row in df.itertuples():
if row.Index < df.shape[0]-1:
if df.at[row.Index+1,'A']!= row.A:
print("a")
else:
print("b")
else:
print("finished")
推荐阅读
- c - 我想将我的代码编译为 32 位系统并拥有以下 make 文件,我该如何正确处理?
- javascript - 将块的结果分配给变量(给出 SyntaxError)
- ruby-on-rails - 实施后
- r - 在拼凑的主标题和情节标题之间添加图例
- django - 将默认 Django 站点名称和域从 example.com 更改为正确的
- python - 如何在与另一个列表具有相同索引的列表中显示最小的 3 个值
- typescript - 在某些页面上隐藏组件 VueJs
- python - 如何使用 Selenium 和 Python 单击带有文本向我发送推送的按钮?
- java - 左/右位移位 - 为什么我们按字节长度移位
- docker - 使用 docker 映像时,zapproxy 全扫描未运行提供的脚本