【发布时间】:2020-05-07 06:05:43
【问题描述】:
您好,下面的代码只给了我最后一个文件中的数据。concat 或 for 循环有问题。我正在从 2 个文件中读取数据。每个都应包含近 350 行 3 列,它们与 for 循环中的条件一致。所以最后数据帧应该给出近 700 x 3 个数据帧。但它只显示最后一个文件中的数据。
import glob
from pathlib import Path
path = Path(r'C:\Users\PC\Desktop\datafiles')
filenames = path.glob('*.txt')
toconcat = []
for i in filenames:
data1 = pd.read_csv(i, sep="\t", header=None)
data1.columns = ['number','ab','cd','as','sd','dfg']
dataset1 = pd.DataFrame(data1.loc[data1.number==1,['number','ab','cd']])
toconcat.append(dataset1)
result = pd.concat(toconcat)
result
但是当我使用 result.shape 时,它显示 700 x 3 这里有什么问题?
【问题讨论】:
-
添加示例数据框和预期输出
-
当你打印你的 toconcat 列表时,你看到你的两个数据框了吗?
-
循环读取的不仅仅是最后一个文件中的数据
-
检查你的 for 循环是否遍历所有文件,另一种想法是只有一个文件满足你的条件
data1.number==1。 -
不,它会读取两个文件。我用计数检查了它。并且两个文件都包含满足 data1.number==1 条件的数据。
标签: python pandas dataframe concatenation