Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用现有列将百分比更改添加到csv文件中_Python_Pandas_Numpy_Csv - Fatal编程技术网

Python 使用现有列将百分比更改添加到csv文件中

Python 使用现有列将百分比更改添加到csv文件中,python,pandas,numpy,csv,Python,Pandas,Numpy,Csv,我有一个csv文件,有两列(日期和股票价格),我想计算百分之一的变化,并添加一个新的列。我之所以要这样做,是因为在此之后,我想将数据分组为正百分比变化和百分比变化 datafile = "file.csv" import pandas as pd df = pd.read_csv('file.csv',na_values='null') 到目前为止,我尝试了这些,但都失败了 一, TypeError:/:“str”和“str”的操作数类型不受支持 二, TypeError:

我有一个csv文件,有两列(日期和股票价格),我想计算百分之一的变化,并添加一个新的列。我之所以要这样做,是因为在此之后,我想将数据分组为正百分比变化和百分比变化

datafile = "file.csv"
import pandas as pd
df = pd.read_csv('file.csv',na_values='null')
到目前为止,我尝试了这些,但都失败了

一,

TypeError:/:“str”和“str”的操作数类型不受支持

二,

TypeError:-:“float”和“str”的操作数类型不受支持

三,

TypeError:-:“float”和“str”的操作数类型不受支持

你能帮我找出这个问题吗?谢谢大家!


原始df看起来像这样

代码块1中的pct_更改被误用:

x = df.pct_change()
您在Competite数据帧上使用pct_change,而它是一个系列函数。 改为:

x=df['close'].pct_change()
df[“1天百分比变化”]=x
然后是代码块2和3,我不确定您希望通过以下方式实现什么:

df[:,1:]
正确的语法应该是iloc(df.iloc[:,1:])。但考虑到np.diff返回一个数组,我不确定您到底想要实现什么。
我的理解是,代码块1达到了预期的效果。

在尝试1、2和3时看到的错误是由于数据类型为object(str)而不是数字(float)

使用df.dtypes,并且很可能您的数据类型都显示“close”和“adj close”等对象

df['close'] = df['close'].astype('float')
df["1 day percent change"] = df['close'].pct_change()

请提供您的DF打印文本样本。此外,请提供失败的上下文。结果不是预期的吗?错误?请尝试指定目标列:
df[“1天百分比变化”]=df['target_col.pct_change()]
@CainãMaxCouto Silva我运行了df[“1天百分比变化”]=df[“1天百分比变化”.pct_change()]并得到了一个AttributeError:'str'对象没有属性'pct_change'@Jerome刚做过-抱歉最初没有包括在内
new_column = ((np.diff(df))/(df[:,1:]))
df = df.merge(new_column, left_index=True, right_index=True)
x = df.pct_change()
df['close'] = df['close'].astype('float')
df["1 day percent change"] = df['close'].pct_change()