我正在尝试打开一个包含多个文本文件的文件夹,并将每个文件放在自己的数据框中,并按文件名命名每个数据框。
到目前为止,我的代码是识别文件夹中的5个文件,但是没有根据文件名将文件中的数据放入数据框中。有人能告诉我怎么做吗?
代码: 进口口 将pandas导入为pd import pypyodbc
loc = 'D:/filepath to folder with files'
os.chdir(loc)
filelist = os.listdir()
#print (len((pd.concat([pd.read_csv(item, names=[item[:-4]]) for item in filelist],axis=1))))
data = []
path = loc
files = [f for f in os.listdir(path) if os.path.isfile(f)]
for f in files:
with open(f,'r') as myfile:
data.append(myfile.read())
df = pd.DataFrame(data)
print (df.shape)
提前谢谢
CNC中 文件中的数据如何显示:
0010010000013 1 CITY OF HOUSTON 1.000
0010020000001 1 CURRENT OWNER 1.000
0010020000003 1 MILBY CHARLES FAMILY PTNSH 1.000
0010020000004 1 FEAGIN MICHAEL RYAN TRUST 1.000
0010020000013 1 BUFFALO BAYOU PARTNERSHIP 1.000
0010020000015 1 BUFFALO BAYOU PARTNERSHIP 1.000
0010020000016 1 USRP PAC LP SPAGHETTI WAREHOUSE 1.000
0010020000023 1 CITY OF HOUSTON 1.000
0010020000024 1 LUISA MILBY FEAGIN 2007 TRUST 1.000
0010030000001 1 BUFFALO BAYOU PARTNERSHIP 1.000
CNC中 最后的答案
dfs = {os.path.basename(f): pd.read_csv(f, sep='\t', header=None,encoding='cp037',error_bad_lines=False) for f in glob.glob('D:/TX/Houston_County/Real_acct_owner/*.txt')}
答案 0 :(得分:4)
这样的事情应该创建一个dict,其中每个键(= filename)保存带有相应文件内容的数据帧。
filedfs = {}
for f in files: filedfs[f] = pd.read_csv(os.path.join(loc, f))
或者,作为@MaxU提出的单行代码:
dfs = {os.path.basename(f): pd.read_csv(f, delim_whitespace=True, header=None) for f in glob.glob('c:/data/*.csv')}
答案 1 :(得分:0)
<强> 输入: 强>
0010010000013,1,CITY OF HOUSTON,1.000
0010020000001,1,CURRENT OWNER,1.000
<强> 代码:的强>
import os
import pandas
loc = 'folder/'
list_of_df = []
for f in os.listdir(loc):
if f.endswith(".txt"):
df = pandas.read_csv(loc+f, sep = ',', names = ['number', 'count', 'buyer', 'status'])
list_of_df.append(df)
for df in list_of_df:
print df
print '--'