for循环似乎忽略了列表值

时间:2017-06-22 21:46:49

标签: python pandas

以下代码中的第二个for循环似乎忽略了" TEST TWO"的根列表中的值。结果。我无法弄清楚为什么 - 有任何建议吗?

import pandas as pd

columns = ['id', 'issye_type']
df = pd.DataFrame(columns=columns)

# print(df)

root = ['issue A',
        'issue B'
        ]

print('\nTEST ONE')
for root in root:
    b = df.issye_type.str.startswith(root, na=False).sum()
    print('# of', root, "issues: ", b)

print('\nTEST TWO')
for root in root:
    c = df.issye_type.str.startswith(root, na=False).sum()
    print('# of', root, "issues: ", c)

结果:

TEST ONE
# of issue A issues:  0
# of issue B issues:  0

TEST TWO
# of i issues:  0
# of s issues:  0
# of s issues:  0
# of u issues:  0
# of e issues:  0
# of   issues:  0
# of B issues:  0

2 个答案:

答案 0 :(得分:2)

问题在于您使用相同的变量来保存列表和迭代变量:

for root in root:

因此,当第一个循环完成时,root现在包含列表中的最后一个字符串,而不是列表。因此,第二个循环遍历该字符串中的字符。

使用其他变量:

print('\nTEST ONE')
for r in root:
    b = df.issye_type.str.startswith(r, na=False).sum()
    print('# of', r, "issues: ", b)

print('\nTEST TWO')
for r in root:
    c = df.issye_type.str.startswith(r, na=False).sum()
    print('# of', r, "issues: ", c)

答案 1 :(得分:0)

我发现你的错误使用for root in roots:在两个循环中更好。

import pandas as pd

columns = ['id', 'issye_type']
df = pd.DataFrame(columns=columns)

# print(df)

roots = ['issue A',
        'issue B'
        ]

print('\nTEST ONE')
for root in roots:
    b = df.issye_type.str.startswith(root, na=False).sum()
    print('# of', root, "issues: ", b)

print('\nTEST TWO')
for root in roots:
    c = df.issye_type.str.startswith(root, na=False).sum()
    print('# of', root, "issues: ", c)

在第二个循环中,全局root变量在第一个循环中被root变量浏览器擦除。