2016-12-28 101 views
1

我有一个目录充满txt文件:如何将一组文档收集到熊猫数据框中?

. 
├── file.txt 
├── file.txt 
├── file.txt 
... 
├── file.txt 
└── file.txt 

我如何读入数据帧大熊猫的所有文件?换句话说,我的目标是在大熊猫数据帧对象来存储一些文件是这样的(* ):

id text_blob 
0 file_name.txt Lore lipsum dolor done 
1 file_name.txt Lore lipsum ... 
2 file_name.txt dolor ... 
3 file_name.txt lore lipsum lore ... 
4 file_name.txt dolor... 

到目前为止,我尝试了下面的代码。然而,这不是Python的,我有一些格式化错误(例如空间问题,'",格式化。):

import glob, os, csv, argparse, sys 

def retrive(directory_path): 
    for filename in sorted(glob.glob(os.path.join(directory_path, '*.txt'))): 
     with open(filename, 'r') as f: 
      important_stuff = f.read().splitlines() 
      oneline = [' '.join(important_stuff)] 
      yield filename.split('/')[-1] + ', ' +str(oneline).strip('[]"') 

def trans(directory,directory2): 
      test = tuple(retrive(directory)) 
      with codecs.open(directory2,'w', encoding='utf8') as out: 
       csv_out=csv.writer(out, delimiter='|') 
       csv_out.writerow(['name','text_blob']) 
       for row in test: 
        csv_out.writerow(row.split(', ', 1)) 


input_d = '../in' 
out_d = '../out' 



trans(input_d,out_d) 
+0

我不知道你期望的结果是什么样子。请阅读http://stackoverflow.com/help/mcve和http://stackoverflow.com/help/how-to-ask – piRSquared

+0

@piRSquared,感谢您的帮助。我期望有一个熊猫数据框里面的所有文件。正如您在(*)中看到的,熊猫数据框符合.txt文档的名称,右侧是文档的内容。 –

回答

1
import glob, os 
import pandas as pd 

input_d = '../in' 
filenames = [] 
blobs = [] 
for pathname in sorted(glob.glob(os.path.join(input_d, '*.txt'))): 
    with open(pathname, 'r') as txtfile: 
     filename = os.path.basename(pathname) 
     filenames.append(filename) 
     blob = ' '.join(txtfile.read().splitlines()) 
     blobs.append(blob) 

df = pd.DataFrame({'id':filenames, 'text_blob':blobs}) 

熊猫数据帧可以在many ways.其中之一是通过一个字典对象被创建。