【问题标题】:How do I merge multiple cvs files into one DataFrame in pandas?如何在 pandas 中将多个 csv 文件合并到一个 DataFrame 中?
【发布时间】:2022-01-19 12:31:14
【问题描述】:

我有一个文件夹,里面有很多 csv 文件,每个文件都包含信号数据的消息。它们具有以下结构:

Frequency [kHz],Power [dbm]
852000,-135.812845793404
852008,-142.13849097071088
852016,-138.21218081816156
852024,-137.32593610384734
852032,-139.464539680863

我想将这些文件合并到一个以频率为键列的 DataFrame 中,因为每个文件中的频率都是相同的。所以它在 DataFrame 中应该是这样的:

Frequency [kHz] | Power [dbm] | Power [dbm] | Power [dbm] | ...

于是我写了如下代码:

df = pd.DataFrame()
for f in csv_files:
    csv = pd.read_csv(f)
    df = pd.merge(df, csv, on='Frequency [kHz]', sort=False)

但我唯一得到的是KeyError: 'Frequency [kHz]'

我最接近我想要的结果是通过pd.concat([pd.read_csv(f) for f in csv_files], axis=0, sort=False),但中间还有那些频率列。

【问题讨论】:

    标签: python pandas dataframe csv


    【解决方案1】:

    我认为您可以将它们全部收集为 dfs,然后合并,如下所示:

    data_frames = []
    for f in csv_files:
        df = pd.read_csv(f)
        data_frames.append(df)
    
    df_merged = reduce(lambda left, right: pd.merge(left, right, on=['Frequency [kHz]'],
                                                how='outer'), data_frames)
    

    【讨论】:

      【解决方案2】:

      您可以将它们全部读入字典并使用 concat:

      import pandas as pd
      import glob
      
      path = 'path' 
      all_files = glob.glob(path + "/*.csv")
      
      df_dict1 = {}
      
      for filename in all_files:
          df = pd.read_csv(filename)
          df_dict1.update({f'{filename}':df})
      
      df = pd.concat(df_dict1, axis =1)
      df = df.droplevel(0, axis =1)
      df.index = df['Frequency [kHz]']
      df.drop(columns = 'Frequency [kHz]', inplace = True)
      

      【讨论】:

      • 现在我进入了每一列{freq},{pow}
      • df.droplevel(0, axis =1)
      • 还是一样的结果。首先是文件路径,然后是 Frequency [kHz],Power [dbm] 的多个列标题,然后是 0 852000,-135.812845793404 ... 852000,-135.2120859201363
      • 我想我现在明白你想要什么,编辑了我的第一个答案
      • 现在我又收到了KeyError: 'Frequency [kHz]'...
      猜你喜欢
      • 2020-02-05
      • 2021-02-12
      • 2014-01-21
      • 2014-01-21
      • 2021-04-03
      • 1970-01-01
      相关资源
      最近更新 更多