我试图将txt文件(整个目录)提取到pandas数据框中,以使数据框中的每一行都包含一个文件的内容。
据我所知,文本文件没有分隔符,它们是电子邮件的正文。除一个文件外,所有文件均分为多行。因此,我有超过500行,而不是有20行(每个文件一个)。我不知道一个文件与其他文件有何不同。它们都是纯文本。
我使用的代码是:
import pandas as pd
for i in files:
list_.append(pd.read_csv('//directory'+i ,sep="\t" , quoting=csv.QUOTE_NONE,header=None,names=["message", "label"]))
Run Code Online (Sandbox Code Playgroud)
我将分隔符设置为表格格式,因为我认为它根本不会影响文本的提取。任何想法在这里是什么问题?
您正在将电子邮件作为CSV文件阅读,因此文件内容为:
在每个制表符分隔符处拆分以创建一列;无论选择哪种分隔符,我都认为这将是一个错误的选择,因为任何字符都可能出现在电子邮件正文中;
电子邮件中的每个换行符都会创建一个新行(可能解释了您的500行)
由于电子邮件不是CSV文件,为什么不编写自己的函数以将每个文件分别读取为一个字符串,然后从所有这些字符串中创建一个数据框架。例如,以字符串形式读取当前目录中的所有文件:
data = []
path = '.'
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)
Run Code Online (Sandbox Code Playgroud)
下面是一个这样的例子在行动,因为它是:
$ ls .
test1.txt test2.txt load_files.py
$ cat load_files.py
import pandas as pd
import os
data = []
path = '.'
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
$ cat test1.txt
asdasd
ada
adasd
$ cat test2.txt
sasdad
asd
dadaadad
$ python load_files.py
0
0 asdasd\nada\nadasd\n
1 sasdad\nasd\ndadaadad\n\n
2 import pandas as pd\nimport os\n\ndata = []\np...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15803 次 |
| 最近记录: |