以下代码中的第二个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
答案 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
变量浏览器擦除。