熊猫错误:系列的真实价值不明确

时间:2020-06-29 22:28:23

标签: python pandas series

我正在尝试创建一个带有密图/整数倍的美国的COVID-19地图,并且我需要将列出州的各种方式转换为两位数的州代码。有些只是全名,我已经通过将代码字典映射到它来解决了。但其他格式则为“加利福尼亚州县市”。

我要说的是,如果“省/州”列中的值包含逗号,请创建一个使用最后2个字符的新列(以返回状态码),否则映射字典(即: {California:CA})。

codes = pd.read_csv('country_codes.csv')
codes = dict(zip(codes.Full, codes.Abbv))

if covid['Province/State'].str.contains(','):
    covid['State'] = covid['Province/State'].str[-2:]
else:
    covid['State'] = covid['Province/State'].map(codes)

if语句出现以下错误:

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

但是,如果我仅运行以下命令:covid['Province/State'].str.contains(',') 它可以正常工作,而且不模糊。

2 个答案:

答案 0 :(得分:0)

covid['Province/State'].str.contains(',')行返回一个布尔序列,如您所见,如果您尝试评估其真实性,则会引发异常。

尝试这样做:

has_comma = covid['Province/State'].str.contains(',')
covid.loc[has_comma, 'State'] = covid['Province/State'].str[-2:]
covid.loc[~has_comma, 'State'] = covid['Province/State'].map(codes)

答案 1 :(得分:0)

不能像任何Python变量一样在条件条件中使用布尔序列。相反,您可以将其用作掩码以在数据框中选择和插入值:

'answers' => ['required', 'array', new ArrayAtLeastOneBoolTrue()],