不明白Pandas.Series.from_csv()的输出

时间:2016-11-19 11:56:08

标签: python pandas dataframe

我有三个包含数据的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]

所以它的意思是这个零是从文件读取的值?那么之前的第一列是什么?我尝试了很多方法,但我没理解这一点。

1 个答案:

答案 0 :(得分:2)

我认为您可以使用更常见的read_csvdelim_whitespace=Trueusecols过滤列,首先将所有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)