【发布时间】:2019-09-18 10:54:17
【问题描述】:
我有一个df,如下:
BDEW Article
0 999 Cola
1 998 Fanta
2 997 Sprite
3 996 Dew
4 995 Water
我们可以看到Article列中每篇文章的第一个字母都以大写字母开头。我要求用户选择一篇文章。如果用户在开始时输入带有大写字母的名称,我的代码可以正常工作。但是如果用户输入cola 而不是Cola,我会得到一个错误:
是否要添加细分 (Y/N)?:y
您想添加哪篇文章?:cola Traceback(最近通话 最后):
文件“”,第 5 行,在 bdew_value = df.loc[df['Article'] == article, 'BDEW'].iloc[0]
文件 "C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\indexing.py", 第 1410 行,在 getitem 中 return self._getitem_axis(maybe_callable, axis=axis)
文件 "C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\indexing.py", 第 2132 行,在 _getitem_axis self._validate_integer(key, axis)
文件 "C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\indexing.py", 第 2063 行,在 _validate_integer 中 raise IndexError("单个位置索引器越界")
IndexError: 单个位置索引器超出范围
我认为错误是因为我在代码中使用了.iloc。
有没有办法可以克服这个问题,即使用户在开头插入一个带有小写字母的名称,代码也应该可以工作。
我的代码:
i = 0
while True:
add_seg = input('Do you want to add a segment (Y/N)?: ')
if (add_seg == 'Y')|(add_seg == 'y'):
article = (input('Which article would you like to add?: ')).lower()
bdew_value = df.loc[df['Article'] == article, 'BDEW'].iloc[0]
i = i + 1
INVOIC.add_segment(Segment('LIN', str(i), '', [str(bdew_value), 'Z01']))
elif (add_seg == 'N')|(add_seg == 'n'):
break
【问题讨论】:
标签: python python-3.x pandas