首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单个文件中的多个文件水平合并为多列?

如何将单个文件中的多个文件水平合并为多列?
EN

Stack Overflow用户
提问于 2022-03-23 05:06:14
回答 3查看 390关注 0票数 -1

我有大约1000 s的文件在一个文件夹中的单列数据。我希望将它们合并为单个文件作为filename作为头文件,并将每个文件值合并为单独的列。

例如: File1.txt

代码语言:javascript
复制
-0.000633
-0.001362
-0.001909
-0.002638
-0.00282
-0.004096

File2.txt

代码语言:javascript
复制
-0.003002
-0.003184
-0.004096
-0.003913

File3.txt

代码语言:javascript
复制
-0.002638
-0.000086
0.001736
0.001736
0.001736

File4.txt

我想按以下方式合并所有这些文件:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-23 05:20:23

代码语言:javascript
复制
file_list = ['File1.txt', 'File2.txt', 'File3.txt']
df = pd.DataFrame()
for file in file_list:
    temp_df = pd.read_csv(file, header=None, names=[file[:-4]])
    df = pd.concat([df, temp_df], axis=1)
    
print(df)

      File1     File2     File3
0 -0.000633 -0.003002 -0.002638
1 -0.001362 -0.003184 -0.000086
2 -0.001909 -0.004096  0.001736
3 -0.002638 -0.003913  0.001736
4 -0.002820 NaN        0.001736
5 -0.004096 NaN       NaN    
票数 1
EN

Stack Overflow用户

发布于 2022-03-23 05:35:55

使用bash和分隔列的选项卡:

代码语言:javascript
复制
#!/usr/bin/env bash                                                                                                                                                                                                                               

combine() {
    local IFS=$'\t' f
    local -a header
    for f in "$@"; do
        header+=("$(basename "$f" .txt)")
    done
    printf "%s\n" "${header[*]}"
    paste "$@"
}

combine File1.txt File2.txt File3.txt File4.txt > filename

将文件名按摩到标题行是一个棘手的问题,paste是合并文件内容的一种简单方法。

票数 1
EN

Stack Overflow用户

发布于 2022-03-23 05:13:57

尝试,read_csv + concat

代码语言:javascript
复制
import pandas as pd

file_list = ["File1.txt", "File2.txt"]

pd.concat([pd.read_csv(f, names=[f.replace('.txt', '')]) for f in file_list], axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71582068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档