python - 迭代期间循环中断 : Python, Pandas

标签 python pandas

这是我的代码,它搜索数据框的列并在满足要求时返回一个值:

import pandas as pd
df=pd.read_csv("cl.csv")
count=0
print(len(df.sl_no))
print(len(df.sn_compare))
for i in range(len(df.sn_compare)):
    if df.sn_compare[i] in df.sl_no:
        print(df.margin[i])
        count=count+1

print(count)

输出:

8258
8258
0.036621541
.
.
.
0.036621541
0.043934426
0.063724333
3770

为什么循环在到达 3770 后停止,而理想情况下我希望它搜索所有 8259 行?

最佳答案

考虑以下示例(但我没有添加边距列)。但是对于 for 循环,它检查列值是否包含在其他列值中,因此添加了 .values (我不知道是否会是相同的情况但在这种情况下,如果我不这样做,它将返回 0)。

import pandas as pd

df = pd.DataFrame({'sl_no':[1,2,3], 'sn_compare':[4,5,3]})
print(df)

df 的输出:

     sl_no  sn_compare
0      1           4
1      2           5
2      3           3

现在,

print(len(df.sl_no))
print(len(df.sn_compare))
count=0

for i in range(len(df.sn_compare)):
    if df.sn_compare[i] in df.sl_no.values:
        #print(df.margin[i])
        count=count+1

print('Count is: ', count)

输出:

3
3
Count is:  1

计数的输出将为 1,因为只有 3 匹配,因此 count 变为 1。

关于python - 迭代期间循环中断 : Python, Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720640/

相关文章:

python - 过滤 Pandas 中的时间序列数据帧以给出每分钟的第一个数据点

python - 创建一个从特定点倒数的新列

python - 使用 pandas 导出 csv 时指定第一列

python - 如何将 tkinter ListBox 转换为列表?

python - 项目列表上的多个 worker

python - 如何获取当前的 'package' 名称? (设置.py)

python - 如何设置饼图 matplotlib 的透明度和背景颜色

python - Python 3.3.2 中的重载函数用法

python - Python OpenCV-Canny边界检测

python - 在 Python Pandas 中创建一个新列并按每个组将值分配给第一行