我有三个包含数据的txt文件,4列数字。我需要将它们加载到一个数据框(维度[3,n],其中n是列的长度)。因为我只需要每个文件中的一列我决定使用 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]
那么这意味着这个零是从文件读取的值?那么之前的第一列是什么?我尝试了很多方法,但我无法理解这一点。
最佳答案
我认为你可以使用更常见的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)
您还可以使用列表理解
:
files = glob.glob("*.txt")
dfs = [pd.read_csv(fp, delim_whitespace=True,usecols=[3]) for fp in files]
df = pd.concat(dfs, axis=1)
关于python - 不理解 Pandas.Series.from_csv() 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40692591/