python - 通过迭代将文本附加到列表中
问题描述
我正在尝试根据不同的情况将颜色附加到列表中。总共有 4 种可能性,如下所述。但是,我在第一个 if 语句中遇到 KeyError = 0 :
col =[]
x = df2["Prog Passes"]/df2["90s"]
y = df2["Prog Carr"]/df2["90s"]
for i in range(0, len(x)):
if x[i]<=x.mean & y[i]<=y.mean:
col.append('yellow')
elif x[i]>=x.mean & y[i]<=y.mean:
col.append('green')
elif x[i]<=x.mean & y[i]>=y.mean:
col.append('blue')
else:
col.append('magenta')
任何想法为什么会出现这种情况以及我如何解决这个问题?
编辑:
@bici-sancta。谢谢!这看起来很有希望。我试过了,我收到一个错误:
TypeError:无法使用 dtyped [float64] 数组和 [bool] 类型的标量执行“rand_”
这是我的代码:
df2["PP90"]= df2["Prog Passes"]/df2["90s"]
df2["PC90"]= df2["Prog Carr"]/df2["90s"]
x = df2["PP90"]
y = df2["PC90"]
df2["Colour"] = "red"
df2.loc[x<x.mean() & y<y.mean(), "Colour"] = 'yellow'
df2.loc[x>x.mean() & y<y.mean(), "Colour"] = 'blue'
df2.loc[x<x.mean() & y>y.mean(), "Colour"] = 'green'
df2.loc[x>x.mean() & y>y.mean(), "Colour"] = 'magenta'
df2
任何想法为什么会发生这种情况?
解决方案
我认为这是你想要完成的一个例子。如果完成后需要,您可以将数据框的最后一列(“颜色”)提取到列表中。我使用了一个简单的值测试,但您可以轻松地替换平均值
对于多条件测试,请在每个测试条件周围使用括号...
df2.loc[(x<x.mean()) & (y<y.mean()), "Colour"]
import pandas as pd
df = pd.DataFrame(data = {'a' : [1,2,3,4,5,6,7,8,9], 'b':[9,8,7,6,5,4,3,2,1]})
df['a_div_b'] = df['a'] / df['b']
# set default color (at one extreme of the value condition test)
df['color'] = 'red'
# successively change colors based on incremental increase in quotient value
df.loc[df['a_div_b'] > 1, 'color'] = 'blue'
df.loc[df['a_div_b'] > 2, 'color'] = 'magenta'
df.loc[df['a_div_b'] > 3, 'color'] = 'cyan'
print(df)
推荐阅读
- node.js - 如何从 React.js 中的用户 id 获取用户名
- docusignapi - AnchorTabString 无法正常工作
- css - Chrome (Windows) 中潜在的 CSS Scroll Snap 错误。两个例子,只有一个作品。为什么?
- python - Python yahoo Finance 错误 market_cap=int(data.get_quote_yahoo(str)['marketCap']) TypeError: 'int' object is not callable
- javascript - 使用 node.js 处理内容类型 application/json 的服务器响应
- javascript - Firebase 远程配置(角度)
- python-3.x - 包装一个 io.BufferedIOBase 使其变得可搜索
- postgresql - 使用只读副本升级 RDS Postgres 实例的正确程序?
- c++ - 如何停止命令缓冲区之间的清除?
- php - 如果我收到错误 403,我的网站是否容易受到 SQL 注入的影响?