我正在尝试创建一个带有密图/整数倍的美国的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(',')
它可以正常工作,而且不模糊。
答案 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()],