python - 使用现有列将百分比更改列添加到 csv 文件
问题描述
我有一个包含 2 列(日期和股票价格)的 csv 文件,我想计算百分之一的变化并添加一个新列。我想这样做是因为在此之后我想将数据分组为正百分比变化和百分比变化。
datafile = "file.csv"
import pandas as pd
df = pd.read_csv('file.csv',na_values='null')
到目前为止,我尝试了这些,但都失败了
1.
x = df.pct_change()
df["1 day percent change"] = x
TypeError:不支持的操作数类型/:'str'和'str'
2.
df["1 day percent change"] = ((np.diff(df))/(df[:,1:]))
TypeError: 不支持的操作数类型 -: 'float' 和 'str'
3.
new_column = ((np.diff(df))/(df[:,1:]))
df = df.merge(new_column, left_index=True, right_index=True)
TypeError: 不支持的操作数类型 -: 'float' 和 'str'
你能帮我找出问题吗?谢谢!
解决方案
代码块 1 中存在 pct_change 的误用:
x = df.pct_change()
当它是一个系列函数时,您在竞争数据帧上使用pct_change 。改为这样做:
x = df['close'].pct_change()
df["1 day percent change"] = x
然后是代码块 2 和 3,我不确定你想用什么来实现:
df[:,1:]
正确的语法是 iloc (df.iloc[:,1:])。但我不确定你想要实现什么,考虑到 np.diff 返回一个数组。我的理解是代码块 1 可以达到您的预期。
推荐阅读
- c++ - 'pos' 未在此范围内声明
- python - 减少大量数据帧的 pandas concat 的内存使用量
- reflection - F#:如何使用案例类型在泛型类型中为具有可区分联合的方法调用 Expression.Call?
- javascript - 如何使活动指示器覆盖 NativeScript 居中
- c++ - 在向量上调用 clear() 实际上不会删除 data() 中的数据?
- spring-boot - 如何使用 Yaml 配置 Flyway?
- google-sheets - 在 HLOOKUP 中搜索组合范围时遇到问题
- c# - 将 'var' 与 'is' 一起使用会导致 Resharper 说代码在启发式上无法访问
- python - 停止 asyncio.run() 忽略我的代码的剩余部分
- node.js - (node:14) UnhandledPromiseRejectionWarning: ReferenceError: ms is not defined