我正在使用以下代码来尝试过滤特定行,但出现一条错误消息:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
df = pd.DataFrame(rdataset)
plane = 'axial'
contrast = 'T1'
a = []
for slices in range(0,60):
if df['nSlices']==slices: #---------------> Problem here ?
path = df.loc[df['nSlices'].eq(slices) & df['Orient'].eq(plane) & df['Contrast'].eq(contrast),'Path'].tolist()
a.append(path)
答案 0 :(得分:1)
出现此错误是因为您试图将Series对象df['nSlices']
与标量整数slices
进行比较。这种比较的结果是带有布尔值的Series对象(尝试执行print(df['nSlices']==slices)
来查看它),并且您不能在if语句中使用它。
要解决该问题,只需删除if df['nSlices']==slices:
即可得到
for slices in range(0,60):
path = df.loc[df['nSlices'].eq(slices) & df['Orient'].eq(plane) & df['Contrast'].eq(contrast),'Path'].tolist()
a.append(path)