RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1537856
Accepted
Аркадий Вартанян
Аркадий Вартанян
Asked:2023-08-27 19:53:42 +0000 UTC2023-08-27 19:53:42 +0000 UTC 2023-08-27 19:53:42 +0000 UTC

过滤数据时出错。熊猫

  • 772

数据框:

import pandas as pd
import numpy as np

data = [['Girev', 'Andrey', 'ВИП', 2815, 29, 58, 6358, 'Moscow', 'Xiaomi'],
       ['Bykin', 'Stas', 'Все за 300', 3634, 37, 78, 602, 'Kazan', 'Samsung'],
       ['Ivanov', 'Alex', 'Всё за 800', 410, 47, 81, 3582, 'Moscow', 'Huawei'],
       ['Andreev', 'Sergey', 'Всё за 500', 1981, 75, 98, 5442, 'Kazan', 'Apple'],
       ['Girev', 'Stas', 'Всё за 800', 4969, 43, 61, 8510, 'Moscow', 'Samsung'],
       ['Bykin', 'Andrey', 'Всё за 500', 4308, 49, 39, 2525, 'Moscow', 'Xiaomi'],
       ['Kozlov', 'Igor', 'Всё за 800', 300, 60, 31, 8543, 'Yakutsk', 'Samsung'],
       ['Girev', 'Alex', 'Промо', 4199, 47, 90, 3925, 'Kazan', 'Apple'],
       ['Petrov', 'Nikolay', 'ВИП', 4810, 72, 88, 7188, 'Moscow', 'Apple'],
       ['Andreev', 'Sergey', 'Всё за 800', 4118, 52, 53, 419, 'Yakutsk', 'Apple'],
       ['Smolov', 'Stas', 'Промо', 1991, 28, 67, 5016, 'Kazan', 'Xiaomi'], 
        ['Girev', 'Igor', 'Корпоративный', 1430, 69, 19, 9520, 'Yakutsk', 'Samsung'],
       ['Kozlov', 'Andrey', 'Корпоративный', 113, 71, 82, 2785, 'Kazan', 'Apple'],
       ['Ivanov', 'Sergey', 'Промо', 3394, 39, 12, 2718, 'Yakutsk', 'Xiaomi'],
       ['Smolov', 'Sergey', 'Всё за 250 (архив)', 3493, 32, 6, 8959, 'Yakutsk', 'Huawei'],
       ['Kozlov', 'Stas', 'Всё за 800', 4565, 59, 82, 3168, 'Moscow', 'Apple'],
       ['Vlasov', 'Andrey', 'Всё за 800', 3192, 29, 74, 2852, 'Yakutsk', 'Xiaomi'],
       ['Smolov', 'Alex', 'Корпоративный', 3764, 71, 22, 2768, 'Moscow', 'Huawei'],
       ['Vlasov', 'Sergey', 'Всё за 800', 3816, 28, 35, 5734, 'Vladivostok', 'Apple'],
       ['Bykin', 'Alex', 'Промо', 817, 65, 34, 2131, 'Vladivostok', 'Samsung'],
       ['Andreev', 'Nikolay', 'Всё за 500', 385, 49, 62, 1815, 'Kazan', 'Xiaomi'],
       ['Bykin', 'Igor', 'Всё за 500', 2642, 38, 11, 3787, 'Moscow', 'Xiaomi'],
       ['Girev', 'Sergey', 'Все за 300', 4230, 62, 68, 5512, 'Vladivostok', 'Samsung'],
       ['Bykin', 'Sergey', 'Всё за 800', 4100, 48, 39, 227, 'Moscow', 'Xiaomi'],
       ['Girev', 'Stas', 'Все за 300', 3371, 53, 24, 7946, 'Kazan', 'Apple'],
       ['Smolov', 'Sergey', 'Корпоративный', 3577, 70, 71, 8847, 'Yakutsk', 'Huawei'],
       ['Mezov', 'Nikolay', 'Всё за 250 (архив)', 2742, 28, 19, 7115, 'Yakutsk', 'Huawei'],
       ['Smolov', 'Stas', 'Всё за 500', 2644, 41, 33, 8341, 'Moscow', 'Xiaomi'],
       ['Vlasov', 'Andrey', 'Всё за 500', 4725, 26, 93, 9441, 'Vladivostok', 'Xiaomi'],
       ['Ivanov', 'Nikolay', 'Всё за 500', 2785, 41, 5, 2901, 'Moscow', 'Samsung']]

df = pd.DataFrame(data, columns = ['surname', 'name', 'tarif', 'balance', 'age', 'sms', 'voice', 'city', 'phone'])

需要添加到列表中的"A"时间'age'小于25。如果更多25年数,则添加"B"。

vacant=[]
for i in range(len(df)):
    if df["age"] < 25:
        vacant.append("A")
    elif df["age"] >25:
        vacant.append("B")

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

通常这样的错误发生在应用AND或OR时,我立即不明白是什么原因。请帮帮我。最好使用循环来实现

python
  • 2 2 个回答
  • 23 Views

2 个回答

  • Voted
  1. Best Answer
    Алексей Р
    2023-08-27T22:13:54Z2023-08-27T22:13:54Z

    发生错误的原因是df["age"]- 是一个完整的系列(pd.Series),即 在本例中,帧中的一列年龄值以及该列中的条件df["age"]<25形成了一个包含 30 个值的布尔数组。解释器非常正确地反对:“该系列的真实值是不明确的”,并要求应用一些函数可以将这 30 个值变为 1 - True 或 False。
    该错误也是由于框架内的数据处理不正确引起的 - 在循环中,您不会迭代行,而是每次检查age原始框架中的列。Pandas一般来说,它们几乎从不明确地在循环中使用,因为 力学Pandas针对矢量计算进行了锐化。
    例如,在这种情况下(以及在更复杂的情况下,例如,当您需要定义不是 2 个,而是 5-10 个或更多类别时),使用分类数据会很方便:

    print(pd.cut(df.age, (0, 25, 200), labels=('A', 'B'), right=False).tolist())
    

    我们在其中定义范围和标签的边界。那些。0到25(不含)的范围将被标记为A,25到200的范围将被标记为B。您可以制作更多范围和标签。

    如果我们讨论如何使您的代码示例正常工作(这对于 来说效率很低Pandas),您可以这样做:

    vacant = []
    for i in range(len(df)):
        if df.at[i,"age"] < 25:
            vacant.append("A")
        else:
            vacant.append("B")
    print(vacant)
    

    或者

    vacant = []
    for _, row in df.iterrows():
        if row.age < 25:
            vacant.append("A")
        else:
            vacant.append("B")
    print(vacant)
    
    • 2
  2. strawdog
    2023-08-27T21:54:35Z2023-08-27T21:54:35Z

    您徒劳地使用循环和向量访问系列。显然,您不完全了解数据框列访问的工作原理。对于你的情况,只需执行以下操作:

    res = np.where(df["age"]<25, "A", "B")
    

    然而,你的例子并不具有指示性——你的年龄值不小于25。而且,正如你在评论中正确指出的那样,你需要处理年龄为25时的情况。

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5