首页 > 解决方案 > 使用现有列将百分比更改列添加到 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'

你能帮我找出问题吗?谢谢!

原始df看起来像这样在此处输入图像描述

标签: pythonpandasnumpycsv

解决方案


代码块 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 可以达到您的预期。


推荐阅读