【发布时间】:2014-12-12 11:58:48
【问题描述】:
我正在尝试导入一组 *.txt 文件。我需要将文件导入 Python 中 Pandas DataFrame 的连续列中。
要求和背景信息:
- 每个文件都有一列数字
- 文件中没有标题
- 可以是正整数和负整数
- 所有 *.txt 文件的大小相同
- DataFrame 的列必须以文件名(不带扩展名)作为标题
- 文件数量无法提前知道
这是一个示例 *.txt 文件。其他所有格式都相同。
16
54
-314
1
15
4
153
86
4
64
373
3
434
31
93
53
873
43
11
533
46
这是我的尝试:
import pandas as pd
import os
import glob
# Step 1: get a list of all csv files in target directory
my_dir = "C:\\Python27\Files\\"
filelist = []
filesList = []
os.chdir( my_dir )
# Step 2: Build up list of files:
for files in glob.glob("*.txt"):
fileName, fileExtension = os.path.splitext(files)
filelist.append(fileName) #filename without extension
filesList.append(files) #filename with extension
# Step 3: Build up DataFrame:
df = pd.DataFrame()
for ijk in filelist:
frame = pd.read_csv(filesList[ijk])
df = df.append(frame)
print df
第 1 步和第 2 步有效。我在第 3 步遇到问题。我收到以下错误消息:
Traceback (most recent call last):
File "C:\Python27\TextFile.py", line 26, in <module>
frame = pd.read_csv(filesList[ijk])
TypeError: list indices must be integers, not str
问题: 有没有更好的方法将这些 *.txt 文件加载到 Pandas 数据框中?为什么 read_csv 不接受文件名字符串?
【问题讨论】:
-
在你的 for 循环中使用
frame = pd.read_csv(ijk)而不是这个frame = pd.read_csv(filesList[ijk])
标签: python-2.7 csv text pandas dataframe