如何解决从多个.txt文件创建一个数据框-每个文件都是一个包含25个值的行
因此,我有7200个txt文件,每个文件有25行。我想从中创建一个数据框,其中包含7200行和25列-.txt文件的每一行都将是一个列的值。
为此,我首先创建了一个长度为25的列表 column_names ,并测试了导入单个.txt文件的情况。
但是,当我尝试这样做时:
pd.read_csv('Data/fake-meta-information/1-meta.txt',delim_whitespace=True,names=column_names)
我得到25x25数据帧,其值仅在第一列。如何以一种方式将txt行作为值插入到列中,而不是将所有行都插入到第一列中并创建25行呢?
下一步是创建 for循环,以将每个文本文件追加为新行。
大概是这样的:
dir1 = *folder_path*
list = os.listdir(dir1)
number_files = len(list)
for i in range(number_files):
title = list[i]
df_temp = pd.read_csv(dir1 + title,names=column_names)
df = df.append(df_temp,ignore_index=True)
我希望我已经清楚了。预先谢谢大家!
解决方法
read_csv
在源文件中每行生成一行,但是您希望它们成为列。您可以读取行并转到列,但是由于这些文件每行只有一个值,因此您可以在numpy
中读取它们,并将每个结果数组用作数据帧中的行。
import numpy as np
import pandas as pd
from pathlib import Path
dir1 = Path(".")
df = pd.DataFrame([np.loadtxt(filename) for filename in dir1.glob("*.txt")])
print(df)
,
tdelaney的答案可能比我的答案“更好”,但是如果您希望使代码在样式上更接近于您当前正在执行的操作,则可以选择以下方法。
由于您读取的数据为25x1,因此获得了当前输出(仅第一列中的数据为25x25),但是您使用names=column_names
参数强制数据帧具有25列。
要解决此问题,只需等到最后应用列名:
-
获取25x1 df(删除名称参数):
df_temp = pd.read_csv(dir1 + title,delim_whitespace=True)
-
将25x1 df附加为25x7200 df:
df = df.append(df_temp,ignore_index=True)
-
转置形成最终7200x25 df的df:
df=df.T
-
添加列名:
df.columns=column_names
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。