首页 > 解决方案 > 为什么我会收到此错误:ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

问题描述

我有一个真假布尔表达式的df,我想比较它们以将数据帧节点列打印到我的.xlsx(如果为真),如果为假则打印到另一个xlsx列。

if data['equal'] == True:
    ws['I1'] = data['node2']
elif data['equal'] == False:
    ws['J1'] == data['#node1']
ws.save()     

错误:

if data['equal'] == True:

Lil' 数据示例:

数据

ws['J1'] `

是我尝试使用 openpyxl 打印到我的 xlsx 的列标题的示例。谢谢

标签: pythonpandasdataframe

解决方案


似乎您想逐行选择数据。正如评论中提到的,您不能直接在值数组上使用 if 语句,但您可以使用该数组作为掩码来索引您的数据帧/numpy 数组。

虽然我可能误解了您问题的确切性质,但您可以通过使用布尔掩码来实现选择,如下所示(使用简单的示例数据框):

>> df = pd.DataFrame({'mask': [True, False, True], 'data': [1, 2, 3]})
    mask  data
0   True     1
1  False     2
2   True     3

>> df[df['mask'] == True]  # select rows which are True
   mask  data
0  True     1
2  True     3

>> df[df['mask'] == False]              
    mask  data
1  False     2

推荐阅读