在Python中合并CSV文件:每个文件仅保留一列,并用原始文件名命名这些列

时间:2019-02-27 22:59:08

标签: python csv join merge stock

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

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

1 个答案:

答案 0 :(得分:0)

如果它们都具有相同的日期范围,则可以使用。

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