【问题标题】:multiple files are merged into one dataframe - pandas多个文件合并到一个数据框 - 熊猫
【发布时间】:2021-10-02 05:08:08
【问题描述】:

我的文件夹中有大约 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。但我想使用“合并”来做到这一点。可能吗? 我该怎么做?

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    您可以使用pandas.merge 根据“日期”键合并数据。由于您可能希望一次合并两个以上的数据帧,您可以使用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”参数的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2017-11-03
      • 2023-02-10
      • 2017-06-11
      • 2016-01-01
      相关资源
      最近更新 更多