python - 我试图运行这段代码,但由于某种原因它不起作用有人可以帮助我吗?
问题描述
for i in df.Revenue:
if df.Revenue.index(i) <= df.Revenue.mean():
df.Revenue.index(i) = 0
else:
df.Revenue.index(i) = 1
print(df.Revenue)
并且语法错误是:无法分配给函数调用
解决方案
因此,该函数df.Revenue.index(i)
为您提供了df.Revenue
. 这是一个类似的例子:
d = {"a": [0.1, 0.2, 0.3, 0.4], "b": [1.0, 2.0, 3.0, 4.0], "c": [2.0, 4.0, 6.0, 8.0]}
df = pd.Series(d)
print(df.a.index(0.3)) # output: 2
上面代码的输出是2
因为对于a
项目,值的索引0.3
是2
,因为位于的项目a
是[0.1, 0.2, 0.3, 0.4]
。
所以,在你的情况下,如果你想df.Revenue
用不同的值替换一个值,你首先要通过获取项目的索引idx = df.Revenue.index(value)
,然后通过设置它df.Revenue[idx] = newvalue
。
但是,根据您的代码的其余部分,包括行df.Revenue.index(i) <= df.Revenue.mean()
,我认为您可能只需要使用df.Revenue[i]
, 并将实际索引用于值i
而不是Revenue
. 这是因为df.Revenue.index(i)
返回一个索引,但您将它与 进行比较df.Revenue.mean()
,这是 的值的平均值Revenue
,因此将索引与值进行比较实际上没有意义。
因此,您的代码可能需要看起来像这样,尽管在不知道其确切要求的情况下我无法确定:
for value, i in enumerate(df.Revenue):
if value <= df.Revenue.mean():
df.Revenue[i] = 0
else:
df.Revenue[i] = 1
print(df.Revenue)
或者,没有enumerate
:
for i in range(len(df.Revenue)):
if df.Revenue[i] <= df.Revenue.mean():
df.Revenue[i] = 0
else:
df.Revenue[i] = 1
print(df.Revenue)
但是我不知道这个pandas
库,所以可能有一种更简单的方法可以做到这一点,但我主要是想尽可能地展示与你的代码相似的代码,除了它实际上是你想要的。
推荐阅读
- python - 与 python 烧瓶的动态链接引发错误
- hibernate - 带有鉴别器列的 JPA @Embeddable 继承
- elixir - 如何在 Phoenix 中定义一个使用 Poison 库的模块
- javascript - 如何使用全局键盘+鼠标键绑定触发电子应用程序?
- reactjs - 反应条纹结帐不工作和刷新页面
- ibm-cloud - 是否可以在离线存储设备上部署模型?
- r - R: How do I plot multiple density plots on one chart, with columns pulled from excel
- couchbase - Couchbase 指标 sortcount 始终为零 - N1QL + .NET SDK
- python - Running a Python Scheduler every Monday?
- javascript - Express,Nodejs - 如何从客户端检测暂停/慢速互联网连接?