【发布时间】:2021-09-14 21:45:26
【问题描述】:
我在一个目录中有 3000 个文本文件,每个 .txt 文件包含单列数据。我想将它们并排排列,使其成为一个 mxn 矩阵文件。
例如:linux中的paste 1.txt 2.txt 3.txt 4.txt .............3000.txt
为此我尝试过
printf "%s\n" *.txt | sort -n | xargs -d '\n' paste
但是它给出了错误粘贴:filename.txt: Too many open files
请使用 python 提出更好的解决方案。
【问题讨论】:
-
import glob; pd.concat([pd.read_csv(file) for file in glob.glob("*.txt")], axis=1)给了什么? -
您可以通过使用命令
ulimit -n 4096将打开文件限制设置为4096 来轻松避免该错误。(不是python 解决方案,所以我没有尝试将其作为答案。) -
@cycolo 然后链接
.dropna(how="all"),这样它就会删除包含所有NaNs 的行。 -
我的意思是
pd.concat([pd.read_csv(file) for file in glob.glob("*.txt")], axis=1).dropna(how="all")... -
没有minimal reproducible example,我只能这样做,也许其他人可以提供帮助。
标签: python pandas linux numpy for-loop