多个文件合并到一个数据框架- pandas中



我在一个文件夹中有大约100个.csv股票文件和一些虚拟数据。
它们被命名为AA.csv, BB.csv, CC.csv.....
文件名"AA"BB"CC"这里是符号。每个数据帧都有一个符号。这里我们有100个符号

Date           Open        High    Low          Close      Adj Close   Volume
2014-09-02  38.849998   38.990002   38.580002   38.740002   35.522366   6196200
2014-09-03  38.779999   38.965000   38.349998   38.395000   35.206020   6796800
2014-09-04  38.400002   38.685001   38.380001   38.580002   35.375645   5741000

我想把100个数据帧合并成一个数据帧。最终的数据框将有101列。
一个日期列,100个符号各一列,这一列将包含我们为该符号计算的返回值。我想要合并,这样它只包含跨符号的日期的交集。

我知道我们可以通过读取每个csv文件并将它们组合成一个信号数据帧来使用concat。但我想这样做使用"合并"。这可能吗?我该怎么做呢?

您可以使用pandas。merge根据关键字"日期"合并数据。您可能想要合并两dataframes多,您可以使用functools.reduce。

假设您从CSV文件中读取的数据如下所示。

import pandas as pd
df_1 = pd.DataFrame({
"Date": ["2014-09-02", "2014-09-03", "2014-09-04"],
"Open": [38.849998, 38.779999, 38.400002]
})
df_2 = pd.DataFrame({
"Date": ["2014-09-02", "2014-09-03", "2014-09-04"],
"High": [38.990002, 38.965000, 38.685001]
})
df_3 = pd.DataFrame({
"Date": ["2014-09-02", "2014-09-03", "2014-09-04"],
"Low": [38.580002, 38.349998, 38.380001]
})
dfs = [df_1, df_2, df_3]

你可以这样做:

import pandas as pd
from functools import reduce
df = reduce(lambda left, right: pd.merge(left, right, on=['Date'],
how='outer'), dfs)

df则为:

Date       Open       High        Low
0  2014-09-02  38.849998  38.990002  38.580002
1  2014-09-03  38.779999  38.965000  38.349998
2  2014-09-04  38.400002  38.685001  38.380001

您还应该阅读pandas文档中关于'how'参数的文档。

相关内容

  • 没有找到相关文章

最新更新