如何用pandas读取一个文件或某个文件夹下所有文件
作者:旺仔的算法coding笔记
这篇文章主要介绍了如何用pandas读取一个文件或某个文件夹下所有文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
pandas读取一个文件或某个文件夹下所有文件
读取一个文件
直接用文件路径。
如果是读取某个文件夹下的所有文件,注意用os.path,逐个读取文件,把新读取到的Dataframe进行concate操作到总的Dataframe中去。
详细请见代码。
character_list =['1010011_i_u_prov', '9010081_i_b_location'] #这是读取一个文件的, # data=pd.read_csv('../data/10line_of_part-00000',sep='\t',header=None) # 如果读取所有文件呢?如下 file_dir="../data/dt=20200807" all_file_list=os.listdir(file_dir) for single_file in all_file_list: # 逐个读取 single_data_frame=pd.read_csv( os.path.join(file_dir,single_file),sep='\t',header=None) if single_file ==all_file_list[0]: all_data_frame=single_data_frame else: #进行concat操作 all_data_frame=pd.concat([all_data_frame, single_data_frame],ignore_index=True) # data.columns=character_list,给dataframe的属性重新命名。 all_data_frame.columns=character_list
备注:
data数据是从sql中select出来的结果。
注意:
分隔符要用\t,不然会报错!
pandas读取多个文件并合并到一起
先把文件位置放到一起,读取文件,再concat。
subdir=‘store' file_names = []#存文件名 file_names.append(test1.csv')#继续添加文件名 csv_paths = []#存文件位置 for file_name in file_names: csv_path = join( '..','csv', subdir, file_name)#文件位置 csv_paths.append(csv_path) break df_csvs = [] for csv_path in csv_paths: df_tmp = pd.read_csv('%s' % csv_path, low_memory=False) df_csvs.append(df_tmp) df_total = pd.concat(df_csvs)#合并成一个dataframe
#小技巧 非必须
#如列名为a.uid想改为uid 用以下方法操作 df_total.columns = [s[2:] for s in df_total.columns] df_total.shape
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。