在读取多个 csv 文件时,是不是可以使用每只股票的名称创建一个名为ticker 的列?

Posted

技术标签:

【中文标题】在读取多个 csv 文件时,是不是可以使用每只股票的名称创建一个名为ticker 的列?【英文标题】:Is it possible to create a column called ticker with the name of each stock when reading in multiple csv files?在读取多个 csv 文件时,是否可以使用每只股票的名称创建一个名为ticker 的列? 【发布时间】:2019-03-09 09:54:11 【问题描述】:

我对 Python 相当陌生,并且在读取多个 csv 文件时需要一些帮助来生成一个名为 Ticker 的新列。作为雅虎! Finance API 已折旧,我正在从 Yahoo! 读取 csv 数据! “GOOG”、“IBM”和“AAPL”的财务。以下代码将单个 csv 文件读入一个 DateFrame,但是,很难区分哪个股票是哪个股票。

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()

是否可以创建一个名为 Ticker 的列,其中包含每个股票的每个观察值的 csv 文件的名称?例如。 GOOG.csv 是 Google 的文件名,IBM.csv 是 IBM 的文件名...

这将更容易识别哪个股票是哪个。

【问题讨论】:

【参考方案1】:

根据this之前的帖子,我被引导相信你有两个明确的选择。 (1) 在原始 read_csv 命令中包含 names=[] 以指定股票名称,或者 (2) 在加载前将列名添加到数据框中。

方法 (1) 可能涉及用以下代码 sn-p 替换您当前的读取:

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

在这里,我假设我可以通过查看路径后面的一个斜杠之后的所有字符,直到 .csv 来获得所需代码的字符串。

方法 (2) 可以通过在读取 csv 之后添加数据帧之前添加以下代码行来实现:

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

我在此回复中假设您只有/想要每个 csv 的一列数据,但如果您想在其中放入多列,您只需在列名列表中指定多个名称。

【讨论】:

以上是关于在读取多个 csv 文件时,是不是可以使用每只股票的名称创建一个名为ticker 的列?的主要内容,如果未能解决你的问题,请参考以下文章

Python plotly 折线图 y 轴按从 CSV 读取的顺序打印,而不是按顺序打印

使用 pandas 读取 CSV 日期会返回 datetime 而不是 Timestamp

pandas读取csv文件时避免科学计数法(xxxe+09)

读取股票数据时出错:“DatetimeProperties”对象没有属性“weekday_name”,“NoneType”对象没有属性“to_csv”

python 读取多个csv文件中某一列,并生成一个新csv文件

使用 PySpark 读取 CSV 时是不是可以仅覆盖一种列类型?