Python 使用IF条件和s.str.startswith时出错
如果条件为真,我将使用str.startswith和if条件“做某事”。我一直在浏览并了解到,对于if条件,不清楚如何处理它。 我不知道如何确切地获得我的问题的解决方案。 我首先编写的代码是:Python 使用IF条件和s.str.startswith时出错,python,pandas,if-statement,Python,Pandas,If Statement,如果条件为真,我将使用str.startswith和if条件“做某事”。我一直在浏览并了解到,对于if条件,不清楚如何处理它。 我不知道如何确切地获得我的问题的解决方案。 我首先编写的代码是: for i in Bus.index: if (Bus['NAME'].str.startswith("S")) : print(i) 这给了我一个错误: ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.
for i in Bus.index:
if (Bus['NAME'].str.startswith("S")) :
print(i)
这给了我一个错误:
ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()
我想说:
for i in Bus.index:
if rows in (Bus['NAME'].str.startswith("S")) are True, Then:
print(i)
and if it is false then do nothing.
据我从建议的帖子和其他在线搜索中了解,我的问题并没有使用我得到的错误中给出的建议,或者我可以看到类似的例子(但我的眼睛比其他人训练得少,可以看到我的逻辑思维错误,关键字在帖子的开头)
“我有点理解”和“我不确定如何准确地获得问题的解决方案”我相信,if()
试图在每次循环时聚合评估所有行的所有布尔值的真实性,这就是为什么错误会说将其包装为类似any()
或all()
将其压缩为单个布尔值
由于在索引中循环,因此可以使用loc()
在循环过程中计算每个索引处的行值:
for i in Bus.index:
if (Bus.loc[i, 'NAME'].startswith("S")):
print(i)
根据您使用它的目的,您还可以通过子集总线
df返回索引列表,并完全避免for循环:
list(Bus[Bus['NAME'].str.startswith("S")].index)
我相信,if()
在每次循环时都试图对所有行的所有布尔值进行聚合求值,这就是为什么错误会说将其封装在类似any()
或all()
的内容中,以将其压缩为单个布尔值
由于在索引中循环,因此可以使用loc()
在循环过程中计算每个索引处的行值:
for i in Bus.index:
if (Bus.loc[i, 'NAME'].startswith("S")):
print(i)
根据您使用它的目的,您还可以通过子集总线
df返回索引列表,并完全避免for循环:
list(Bus[Bus['NAME'].str.startswith("S")].index)
请提供完整的错误输出以及。无论如何,这似乎是重复的。这回答了你的问题吗?@BEN_-YO你指的是什么答案?顺便说一句,最好在聊天室讨论类似的问题。@BEN_-YO除非我遗漏了什么,否则我看不到该问题的任何答案。@BEN_-YO可以你为此建立了一个聊天室?请提供整个错误输出,以及一个。在任何情况下,这似乎是重复的。这回答了你的问题吗?@BEN_-YO你指的是什么答案?顺便说一句,最好在聊天室讨论类似的问题。@BEN_-YO除非我遗漏了什么,否则我看不到任何答案对那个问题。@BEN_-YO你能为这个建立一个聊天室吗?谢谢你,还有今晚的解释。最下面的是一个很好的建议。谢谢你,还有今晚的解释。最下面的是一个很好的建议。