当前位置: 首页 > 知识库问答 >
问题:

按创建日期筛选多个csv文件并连接到一个数据帧中

云弘壮
2023-03-14

我想阅读刚刚过去7天创建的csv文件从一个目录到熊猫,并将它们连接到一个大数据帧。不过我还没弄明白。以下是我到目前为止的情况:

编辑:我试图按csv文件的创建日期过滤,而不是按csv中的任何列过滤。

from datetime import datetime, timedelta
import pandas as pd
import glob

fileday = datetime.now() - timedelta(7)
fileday = datetime.strftime(fileday, '%Y%m%d')

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

共有2个答案

舒斯伯
2023-03-14

你可以做这样的事。

df = pd.DataFrame()

for filename in all_files:
    df = df.append(pd.read_csv(filename))
靳富
2023-03-14

既然您使用的是pandas,那么让我们结合使用pathlib和pandas。

from pathlib import Path
import pandas as pd 

p = Path(r'C:\DRO\DCL_rawdata_files')

all_files = p.glob('*.csv')

df = pd.DataFrame({'files' : all_files})

df['date'] = pd.to_datetime(df['files'].apply(lambda x : x.stat().st_mtime),unit='s')
# filter your files.
trg_files = df[df['date'] >= pd.Timestamp('now') - pd.DateOffset(days=7)]['files'].tolist()


dfs = [pd.read_csv(f) for f in trg_files]
 类似资料:
  • 我想从一个目录中读取几个csv文件到pandas中,并将它们连接到一个大的数据帧中。不过我还没弄明白。以下是我目前掌握的情况: 我想我需要在for循环中得到一些帮助???

  • 我想从一个目录中读取几个excel文件到pandas中,并将它们连接到一个大的数据帧中。不过我还没弄明白。我需要一些关于for循环和构建级联数据帧的帮助:

  • 我有多个csv文件(每个文件包含N行(例如,1000行)和43列)。 我想把文件夹中的几个csv文件读入pandas,并将它们合并到一个数据帧中。 不过我还没能弄明白。 问题是,数据帧的最终输出(即,)将所有列(即43列)合并到代码的一列(见附图)屏幕截图中 选定行和列的示例(文件一) 选择的行和列(文件二)Client_IDClient_NamePointer_of_Bins日期权重C00000

  • 我遇到问题< code >没有要连接的对象。我不能进口。csv文件,将它们连接成一个数据帧。我在用熊猫。旧答案没有帮助我,所以请不要标记为重复。 文件夹结构就是这样 < li >不起作用

  • 我有多个csv文件保存在一个文件夹中,具有相同的列布局,并希望将其作为pandas中的数据帧加载到python中。 这个问题与这条线索非常相似。 我使用以下代码: 还有更好的解决方案吗? 这需要很多时间。 谢啦

  • 若要用单个列过滤数据文件(DF),如果我们考虑有男性和女性的数据,我们可以: 问题1——但如果数据跨越多年,而我只想看到2014年的男性会怎样? 在其他语言中,我可能会这样做: (除非我想这样做并在新的dataframe对象中获取原始dataframe的子集) 问题2。我如何在一个循环中实现这一点,并为每个独特的年份和性别集(即:2013年男性、2013年女性、2014年男性和2014年女性)创建