在读取多个csv文件时,是否可以创建一个名为ticker的列,其中包含每个股票的名称?

23 浏览
0 Comments

在读取多个csv文件时,是否可以创建一个名为ticker的列,其中包含每个股票的名称?

我对Python还比较新,想要在读取多个csv文件时生成一个名为的新列,并从雅虎金融中读取'GOOG','IBM'和'AAPL'的csv数据,由于雅虎金融API已经停用。以下代码将各个csv文件读入一个DataFrame,然而,很难区分哪个股票是哪个。

path = 
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file in allFiles:
     df = pd.read_csv(file,index_col=None, 
          header=0)
     list_.append(df)
frame = pd.concat(list_)
frame.head()

是否可能创建一个名为的列,对于每个股票的每个观察结果,列中包含csv文件的名称?例如,GOOG.csv是Google的文件名,IBM.csv是IBM的文件名...这样可以更容易地识别每个股票。

0
0 Comments

问题的出现的原因是在读取多个CSV文件时,需要创建一个名为"ticker"的列,用于存储每个股票的名称。解决方法有两种:一种是在读取CSV文件时使用参数names=[]来指定股票名称,另一种是在加载数据之前将列名添加到数据帧中。

第一种方法可以使用以下代码替换当前的读取代码:

df=pd.read_csv(file,names=[file[len(path)+1:-4]],index_col=None)

这里假设通过查看路径后的斜杠之后的所有字符,并且直到.csv结尾的位置来获取所需的股票名称的字符串。

第二种方法可以在读取CSV文件后,但在将数据追加到数据帧之前,添加以下代码:

df.columns=[file[len(path)+1:-4]]

这里假设您只有/想要每个CSV中的一列数据,但如果您想要多列数据,则只需在列名列表中指定多个名称。

根据这个之前的回答,可以选择其中一种方法来解决这个问题。

0