如何用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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
