【问题标题】:python, pandas, csv import and morepython、pandas、csv 导入等
【发布时间】:2016-07-02 16:06:39
【问题描述】:

我见过很多关于将多个 csv 文件导入 pandas 数据框的问题。 我的问题是如何导入多个 csv 文件但忽略目录中的最后一个 csv 文件?我很难找到这个问题的答案。

另外,我们假设 csv 文件名都是不同的,这就是代码文件是“/*.csv”的原因

任何资源也将不胜感激。谢谢!

path =r'C:\DRO\DCL_rawdata_files' # use your path
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
    df = pd.read_csv(file_,index_col=None, header=0)
    list_.append(df)
frame = pd.concat(list_)

【问题讨论】:

  • 请定义:the last csv file in your directory
  • allFiles[:-1] - 这就是你想要的吗?
  • 这也是假设您确切知道 last 文件是什么。
  • 如果您自己回答以下问题:what排序的最后一个(创建时间、文件名、文件大小等)?,那么您会发现我想答案很容易......
  • @MaxU 很好,我没有意识到这一点。如果可能,让我们基于创建时间(如在最近的 csv 文件中)

标签: python csv pandas import


【解决方案1】:

试试这个:

import os
import glob
import pandas as pd

def get_merged_csv(flist, **kwargs):
    return pd.concat([pd.read_csv(f, **kwargs) for f in flist], ignore_index=True)

path =r'C:\DRO\DCL_rawdata_files' # use your path
fmask = os.path.join(path, '*.csv')
allFiles = sorted(glob.glob(fmask), key=os.path.getmtime)

frame = get_merged_csv(allFiles[:-1], index_col=None, header=0)

【讨论】:

  • 感谢您的回复。太好了。我能再问你一个问题吗?让我们假设除了跳过最近的 CSV 文件之外,我还想遍历列表 n 周期。如,一次导入 4 个 CSV 文件并假设我不知道有多少 CSV(可能是偶数或奇数) - ty
  • @antonio_zeus,你想分块加载你的 CSV,一个块中有 4 个文件吗?
  • 让我们使用上面的代码。假设 allFiles 有 80 多个 csv 文件。无论有多少,我如何一次将 4 个循环到 allFiles 中的 for file_ 中?例如:82 个 csv 文件,将循环 20 次,每个文件 4 个,然后在最后循环剩余的 2 个。这可能吗?太棒了!
  • @antonio_zeus,你想看this
  • 感谢您为我指明了正确的方向 - 我真的很感激。
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 2021-06-20
  • 2014-02-07
  • 2017-02-07
  • 2021-02-24
相关资源
最近更新 更多