Error: The truth value of a Series is ambiguous

Error: The truth value of a Series is ambiguous

我正在尝试使用以下代码生成新列

list = ['LHR','-1','-3','LGW','MAD','SIN','KUL','JFK','HKG','PVG','IST','SDA','GLA']
for i in list:
    if plotdata.loc[plotdata['LOCATION'] == i] :
        plotdata['city'] = plotdata['LOCATION']
    else:
        plotdata['city'] = 'others'

我收到以下错误:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

数据类型是类别,请问为什么会出现这个错误?

不确定为什么会出现此错误。但是,最好不要循环 pandas.

您可以通过将“城市”设置为“位置”的任意位置然后恢复为“其他”(如果它不在列表中)来避免该错误。

city_list = ['LHR','-1','-3','LGW','MAD','SIN','KUL','JFK','HKG','PVG','IST','SDA','GLA']
plotdata['city'] = plotdata['LOCATION']
plotdata.loc[~plotdata['city'].isin(city_list), 'city'] = 'other'

您收到此错误是因为以下代码:

if plotdata.loc[plotdata['LOCATION'] == i]

正在测试 .loc() 返回的数据帧 plotdata 的子集,这又是因为布尔掩码:

plotdata['LOCATION'] == i

returns 布尔数组。

总体而言,由于 .loc() returns 数据帧的一个子集,因此消息:

ValueError: DataFrame 的真值 不明确。