【问题标题】:how do I put the statement result in a list? [closed]如何将语句结果放入列表中? [关闭]
【发布时间】:2021-07-09 00:37:44
【问题描述】:

我正在尝试将“是”或“否”结果保存到此处命名为异常值的列表中。

这是我的代码

d = {'col1': [1, 2, 3, 4, 5], 'Spread': [10, 10.8, 5.0, 4.9,12.3]}
df = pd.DataFrame(d)
upper_limit = 9

rows = df.index.tolist()
outlier = []
for i in rows:
    if df.Spread[i]>upper_limit:
        result = print('yes') in outlier
    else:
        result = print('no') in outlier
         

我的输出是这样的

yes
yes
no
no
yes

在这个循环之后,如果我打印异常值,它只会返回一个空列表。 在这个阶段我做错了什么? 如何在列表中保存“是”或“否”结果?

提前致谢!

更新了!

【问题讨论】:

  • 您需要返回到您的教程资料以查看print 命令的作用。您似乎认为它返回了对程序有用的值;这与向控制台显示值的记录目的不一致。
  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。由于未定义的数据框,您发布的代码失败。
  • include a minimal data frame 作为您的 MRE 的一部分。
  • @Prune 确定刚刚更新
  • 我会等到 MRE 完成。

标签: python for-loop if-statement outliers


【解决方案1】:

print() 用于在屏幕上显示文本 - 不是将值返回给变量。
但通常displaying on screen 被称为"returning data",这可能会产生误导。

您只需要result = "yes"result = "no"
而且你需要在outlier.append(result)行中缩进更小

outlier = []

for i in rows:

    # if/else
    if df.Spread[i] > upper_limit:
        result = 'yes'
    else:
        result = 'no'

    # after if/else
    outlier.append(result)   

也可以直接添加

outlier = []

for i in rows:

    # if/else
    if df.Spread[i] > upper_limit:
        outlier.append('yes')   
    else:
        outlier.append('no')   

    # after if/else
    # ... nothing ...
    

【讨论】:

  • 明白!非常感谢您的解释!
猜你喜欢
  • 2010-11-02
  • 2019-07-28
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2012-01-08
相关资源
最近更新 更多