我和大熊猫一起做菜,最近,我得到了#ValueError'当我试图修改遵循某些规则的列时,如:
var titles = new HashSet<string>();
foreach (var title in SeleniumContext
.Driver
.FindElements(By.XPath(ComparisonTableElements.ProductTitle))
.Select(p => p.Text))
{
if (!titles.Add(title))
{
Assert.Fail("Found duplicate product in the table");
}
}
我正在搜索此错误,我想这是因为&#39; if&#39;声明和&#39; ==&#39;运营商,但我不知道如何解决这个问题。
谢谢!
答案 0 :(得分:0)
所以Andrew L的评论是正确的,但为了您的利益,我会稍微扩展一下。
当你打电话时,例如
csv_input['ip.dst'] == '192.168.1.100'
返回的是一个Series,其索引与csv_input相同,但该系列中的所有值都是布尔值,并表示该行csv_input['ip.dst']
中的值是否等于'192.168.1.100'
。
所以,当你打电话
if csv_input['ip.dst'] == '192.168.1.100':
您是否要求系列评估为True还是False。希望这解释了The truth value of a Series is ambiguous.
的含义,它是一个系列,它不能归结为布尔值。
现在,看起来像你想要做的是设置flow_dir
,ip.src
&amp; ip.dst
列,基于ip.src
列中的值。
执行此操作的正确方法是.loc[]
,如下所示:
#equivalent to first if statement
csv_input.loc[
csv_input['ip.src'] = '192.168.1.100',
('ip.src','ip.dst','flow_dir')
] = (1,0,1)
#equivalent to second if statement
csv_input.loc[
csv_input['ip.dst'] = '192.168.1.100',
('ip.src','ip.dst','flow_dir')
] = (0,1,0)