for循环似乎忽略了列表值

2024-04-23 13:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

下面代码中的第二个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

Tags: columnsoftestdffortyperootissue
2条回答

我看到您的bug在两个循环中使用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变量擦除。你知道吗

问题是您使用同一个变量来保存列表和迭代变量:

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)

相关问题 更多 >