繁体   English   中英

文件名(来自多个文件)作为一个数据框中的列名

[英]File names (from multiple files) as a column names in one data frame

我有很多文本文件,包含一个列数据,不同的dtype(float64,日期),里面没有标题。
我正在尝试编写以下代码:
- 获取没有扩展名的所有文件名 - >创建一个列表(这有效!)
- 读取一个目录中的所有文件,并将它们连接成一个带有一个数字索引的数据框。

我的代码:

filelist = os.listdir(path)                             #Make a file list
file_names=[os.path.splitext(x)[0] for x in filelist]   #Remove file extension

试过这个(第一个选项):

df_list = [pd.read_table(file) for file in filelist]
df = pd.concat(df_list,ignore_index=True)

...但我从6个文件中获得3列,其中包含完全混乱的数据。

也尝试了这个(第二个选项):

df=pd.DataFrame(columns=file_names)

for file in filelist:
    frame=pd.read_csv(file)
    df=df.append(frame, ignore_index=True)

......这也行不通。

任何意见,将不胜感激。

输入
在Q * .txt文件的开头只有零(大约100个值),并在此数字后显示。

Q1.txt   Q2.txt   T21     T22
  0       0      51.06    77.46
  0       0      50.32    77.33
  0       0      50.90    77.45

当我运行“第一选项”时,我得到了:

 filelist
 >>>['Q1.txt', 'Q2.txt','T21.txt', 'T22.txt']     
 file_names
 >>>['Q1', 'Q2','T21', 'T22']
 df.dtypes
 >>>0        object
 >>>51.06    object
 >>>77.46    object
 >>>dtype: object

输出文件

    0  51.06 77.46
 0  0       
 1  0       
 2  0       

它看起来像前两个文件(开头有零的文件)在一列中。 第二和第三是文件T21和T22的第一个值。

由于@Viktor Kerkez我添加header=Nonepd.read_table现在所有文件都在一列,D类=对象。
如何将所有文件拆分为多列?

你可以做下一件事:

import os
import pandas as pd

file_names = []
data_frames = []
for filename in os.listdir(path):
    name = os.path.splitext(filename)[0]
    file_names.append(name)
    df = pd.read_csv(filename, header=None)
    df.rename(columns={0: name}, inplace=True)
    data_frames.append(df)

combined = pd.concat(data_frames, axis=1)

在这里,我重命名了每个DataFrame列以匹配文件名,您可以将该步骤保留,并使用ignore_index=True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM