【问题标题】:creating a new list and fill it based on the values of a pandas Series [duplicate]创建一个新列表并根据熊猫系列的值填充它[重复]
【发布时间】:2018-11-01 10:40:39
【问题描述】:

我正在尝试创建一个 for 循环,该循环遍历熊猫系列 ageNew,它根据熊猫系列的内容填充列表 label

这是我输出错误的代码:

在:

for i in ageNew.items():
    if ageNew[i] <= 100:
        val = 0
    else:
        val = 1
    label.append(val)

输出:

KeyError: (0, 218)

【问题讨论】:

  • for k,v in age_new.items() 不要使用 camalCase
  • 你可以用.values代替.items()for i in ageNew.values:

标签: python list pandas series


【解决方案1】:

当您使用item() 时,您需要传递两个参数作为语句示例:

for k,v in dct.items():
    print(k, v)

【讨论】:

    【解决方案2】:

    使用向量运算而不是循环以提高效率和简洁性

    label = (age_new > 100).astype(int).tolist()
    

    【讨论】:

    • 性能更高的版本:(age_new.values &gt; 100).astype(int).tolist()
    • 哦,这很酷,只是出于好奇,向量运算如何处理非二进制值,即标签可以等于 0,1 或 2。会是这样吗:@987654323 @
    • 几乎!使用逐位and 运算符&amp; 而不是&amp;&amp;&amp;&amp; 不是有效的 python 运算符。同样,按位的or 运算符是| 而不是||
    【解决方案3】:

    您可以使用 .values 而不是 .items() 来获取值:

    for v in dct.values:
        if v <= 100:
            ...
    

    【讨论】:

    • 输出KeyError: 218
    • 如果你这样做怎么办:if i &lt;= 100
    • values 不是熊猫系列的功能。这不是字典。
    猜你喜欢
    • 2020-07-07
    • 2020-11-26
    • 2021-12-10
    • 2021-09-11
    • 2019-01-23
    • 2019-06-05
    • 2018-08-15
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多