gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:46 25 4
gpt4 key购买 nike

我有很多文本文件只有一列数据,不同的数据类型(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

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

感谢@Viktor Kerkez,我已将 header=None 添加到 pd.read_table 中,现在所有文件都在一列中,dtype=object。
如何将所有文件拆分为多列?

最佳答案

你可以做接下来的事情:

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

关于python - 文件名(来自多个文件)作为一个数据框中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com