【问题标题】:Merge CSV files in Python: only keep 1 column of each file and name the columns with original file names在 Python 中合并 CSV 文件:每个文件只保留 1 列,并用原始文件名命名列
【发布时间】:2019-07-21 18:53:48
【问题描述】:

我有 7 只股票的 7 个 csv 文件。每个文件共享相同的列和行格式。

我已经应用了不同的方法将这些文件合并到 1 个数据帧中,但仍然没有成功(循环、使用 glob 等)。我想将“日期”列保留为数据框的索引,并将每个文件的“高”列彼此相邻。然后根据股票名称重命名“高”列。

import pandas as pd
FDX = pd.read_csv("../Data/FDX.csv")
GOOGL = pd.read_csv("../Data/GOOGL.csv")
IBM = pd.read_csv("../Data/IBM.csv")
KO = pd.read_csv("../Data/KO.csv")
MS = pd.read_csv("../Data/MS.csv")
NOK = pd.read_csv("../Data/NOK.csv")
XOM = pd.read_csv("../Data/XOM.csv")

stocks = pd.DataFrame({"FDX": FDX["High"],
                       "GOOGL": GOOGL["High"],
                       "IBM": IBM["High"],
                       "KO": KO["High"],
                       "MS": MS["High"],
                       "NOK": NOK["High"],
                       "XOM": XOM["High"]
                       })
stocks.head()

我写的代码有错误。反正在那里做吗? 感谢您的回答!

【问题讨论】:

  • use text, not images/links, for text--including tables & ERDs. 仅将图像用于无法表达为文本或扩充文本的内容。无法搜索或剪切和粘贴图像。请在发帖之前查看编辑框下方帖子的格式化版本。请在代码问题中给出minimal reproducible example--cut & paste & runnable code 加上所需的输出加上清晰的规范和解释。请显示您可以执行哪些相关查询并解释您遇到的第一个问题。需求转储不是主题问题。

标签: python csv join merge stock


【解决方案1】:

如果它们都具有相同的日期范围,这将有效。

MergeList = [[GOOGL,'GOOGL'],[IBM,'IBM'],[KO,'KO'],[MS,'MS'],[NOK,'NOK'],[XOM,'XOM']]

NewList = []

for df_t,col_name in MergeList:
    df_t = df_t[['Date','High']]
    df_t.columns = ['Date',col_name]
    NewList.append(df_t)

Merge = FDX

for df_t in NewList:
    Merge = pd.merge(Merge,df_t,on='Date')

【讨论】:

  • 谢谢,但它不起作用。错误是 KeyError: "['Date' 'High'] not in index"
  • 您需要确保这是您想要的列的名称(区分大小写),您没有提供实际数据,所以我猜测了列的名称.查看您创建的数据框(GOOGL、IBM 等...)
猜你喜欢
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2015-06-09
  • 2021-09-26
  • 2017-05-17
相关资源
最近更新 更多