【发布时间】:2019-08-01 02:50:04
【问题描述】:
这是我现在正在处理的数据集列的示例:
print (data)
Credit Days
0 30
1 Cash & Carry
2 Cash & Carry
3 20
4 20
5 30
6 15
7 10
8 15
9 Cash & Carry
10 10
11 10
12 21
13 Cash & Carry
14 20
15 20
所以该列同时包含字符串和整数值。我必须将这些值转换为整数评级,并且必须将它们保存到新创建的列中,例如 credit_days_rating。为此我写了一个代码:
data = pd.read_csv('test.csv', engine='python')
data['Credit Days'].astype(str)
if data['Credit Days']=='Cash & Carry':
data['credit_days_rating'] = 4
else :
data['Credit Days'].astype(int)
if (data['Credit Days']>= 10) & (data['Credit Days']< 19):
data['credit_days_rating'] = 3
elif (data['Credit Days']>= 20) & (data['Credit Days']< 29):
data['credit_days_rating'] = 2
else :
data['credit_days_rating'] = 1
为此,我收到以下错误日志:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-65-f6ecf070a2d4> in <module>()
2
3 data['Credit Days'].astype(str)
----> 4 if (data['Credit Days']=='Cash & Carry'):
5 data['credit_days_rating'] = 5
6 else :
~/anaconda3/envs/tensorflow/lib/python3.5/site-packages/pandas/core/generic.py in __nonzero__(self)
1119 raise ValueError("The truth value of a {0} is ambiguous. "
1120 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1121 .format(self.__class__.__name__))
1122
1123 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
新列应如下所示:
【问题讨论】:
-
if [1, 2 3] == 2。你会怎么回答? -
数据的预期输出是什么?
(data['Credit Days']>= 10) & (data['Credit Days']< 19)外面会发生什么? -
@jezrael 我更新了。请检查。
-
评分的其他条件是什么?
-
@roganjosh :我更新了代码以列出所有条件。请检查。
标签: python pandas dataframe valueerror