熊猫数据框的条件追加列表

时间:2019-12-25 22:14:09

标签: python pandas

我正在使用以下代码来尝试过滤特定行,但出现一条错误消息:

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)

1 个答案:

答案 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)