我有三个包含数据的txt文件,4列数字。我需要将它们加载到一个数据框(dimension [3,n],其中n是列的长度).Becouse我只需要每个文件中的一列我决定使用Series.from_csv()函数,但我无法理解输出。 我写了这段代码:
names = glob.glob("*.txt")
for i in names:
rank = pd.Series.from_csv(i,sep=" ",index_col = 3)
print rank
这打印了我的一列数据(这很好),但也有一列用这样的零填充:
0.039157 0
0.039001 0
0.038524 0
0.038579 0
0.038385 0
当我使用
时,我发现更多的眩晕rank = pd.Series.from_csv(i,sep=" ",index_col = 3).values
我明白了:
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
所以它的意思是这个零是从文件读取的值?那么之前的第一列是什么?我尝试了很多方法,但我没理解这一点。
答案 0 :(得分:2)
我认为您可以使用更常见的read_csv
与delim_whitespace=True
和usecols
过滤列,首先将所有DataFrames
附加到list
dfs
然后使用concat
:
dfs = []
names = glob.glob("*.txt")
for i in names:
rank = pd.read_csv(i,delim_whitespace=True,usecols=[3])
print rank
dfs.append(rank)
df = pd.concat(dfs, axis=1)
或sep='\s+'
- 分隔符是任意空格:
dfs = []
names = glob.glob("*.txt")
for i in names:
rank = pd.read_csv(i,sep='\s+',usecols=[3])
print rank
dfs.append(rank)
df = pd.concat(dfs, axis=1)
您也可以使用list comprehension
:
files = glob.glob("*.txt")
dfs = [pd.read_csv(fp, delim_whitespace=True,usecols=[3]) for fp in files]
df = pd.concat(dfs, axis=1)