当前位置: 首页 > 知识库问答 >
问题:

如何从df中获取值,而不管用户输入是否有大写字母

颛孙英勋
2023-03-14

我有一个df,如下所示:

    BDEW    Article
0   999     Cola
1   998     Fanta
2   997     Sprite
3   996     Dew
4   995     Water

我们可以看到文章列中每一篇文章的第一个字母都以大写字母开头。我要求用户选择一篇文章。如果用户以大写字母开头输入名称,我的代码可以正常工作。但是,如果用户输入的是<code>cola</code>而不是<code>cola</ccode>,我会得到一个错误:

是否要添加段 (是/否)?: y

您想添加哪篇文章?:可乐回溯(最近一次通话):

文件"",第5行,在bdew_value=df.loc[df['文章']==文章,'BDEW']. iloc[0]

getitem返回self中的文件“C:\ Users \ kashy \ anaconda 3 \ envs \ py36 \ lib \ site-packages \ pandas \ core \ indexing . py”,第1410行。_getitem_axis(maybe_callable,axis=axis)

文件"C:\用户\kashy\Anaconda3\envs\py36\lib\站点包\熊猫\核心\indexing.py",第2132行,_getitem_axis。_validate_integer(键,轴)

文件 “C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\indexing.py”,第 2063 行,_validate_integer引发 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

共有2个答案

严阳夏
2023-03-14

过滤似乎不返回任何行,即<code>df。loc[df['Article']==Article,'BDEW']返回空数据帧。您可以替换<code>。iloc[0]和。获取(0),然后控制bdew_value不是 ,如果是,则再次提示用户,指出未找到与上一个输入匹配的内容。

现在,过滤返回无行的原因是您应该 .captialize 输入(或 .降低“文章”列)以使大小写匹配。但是,即使在这种情况下遇到的特定问题已修复,也请大致考虑前一段。

我希望这能有所帮助:-)

邹山
2023-03-14

将用户给出的输入转换为大写,然后进行比较。类似:

article = (input('你想添加哪篇文章?: ')).upper()

你说过,要使程序工作,第一个字母必须是大写字母。所以我想剩下的没关系。

或者,如果您愿意,您只能将第一个字母转换为大写:

article=(input('您想添加哪篇文章?:')).capitalize()

 类似资料:
  • 问题内容: 我正在尝试创建一个基本菜单,以检查输入的变量是否与定义的变量匹配。如果定义了变量,则获取已定义变量的数据。 例。 我输入 应该相等 问题答案: 这似乎是您要找的东西: 但是,这可能不是最好的策略,因为错字或恶意用户很容易使您的代码崩溃,系统过载或执行他们喜欢的任何其他讨厌的事情。对于这种特殊情况,更好的方法可能是

  • 在下面的例子中,我试图接受用户的单字符输入,但是当运行程序时,我得到do...而循环执行多次。请参阅下面程序的结果。 如果有人能帮我找到答案,如何解决这个问题?

  • 我正在尝试根据用户输入字段获取api数据。如何获取这些数据的值? 我的apiendpoint如下“http://localhost:8000/api/p_list?search=" . 每当用户输入值时,endpoint如下“http://localhost:8000/api/p_list?search=01这里输入的字段值为“01”。我想得到结果的值。 我可能是新来的反应。我尝试了下面这样的东西

  • 问题内容: 如何从用户进行pygame打印输入: 我试图让用户键入一些内容,然后pygame将其打印在屏幕上。 这是我当前的程序: 我想要这样,当用户点击Enter时,它将清空屏幕。 帮我! 问题答案: 这是一个示例脚本,可将输入切换到屏幕。它显示了如何在遍历pygame事件队列时修改字符串。每帧都将清除屏幕,并重建名称表面并使其变白。 这是要点版本

  • 我想使用jquery获取foreach循环中的输入字段值。下面是html结构 我试图通过这种方式获得价值 但这样,我只得到第一行的值。如何使用jQuery获取所有行的值?

  • 问题内容: 我有一个输入字段,如下所示: 我想获取输入字段的值并将其分配给会话。如何使用PHP或jQuery做到这一点? 问题答案: 使用PHP 或超全局变量通过HTML标签的名称来检索输入标签的值。 例如,更改表单中的方法,然后通过输入名称回显该值: 使用方法: 要显示值: 使用方法: 要显示值: