簡體   English   中英

如何在具有多列的單個文件中水平合並多個文件?

[英]How to merge multiple files horizontally in a single file with multiple columns?

我在一個包含單列數據的文件夾中有大約 1000 個文件。 我想將它們合並為單個文件, filename名為 header,每個文件值在 separte 列中。

例如:File1.txt

-0.000633
-0.001362
-0.001909
-0.002638
-0.00282
-0.004096

文件2.txt

-0.003002
-0.003184
-0.004096
-0.003913

文件3.txt

-0.002638
-0.000086
0.001736
0.001736
0.001736

文件4.txt

我想按如下方式合並所有這些文件:

預期輸出

嘗試, read_csv + concat

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)
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    

使用bash和制表符分隔列:

#!/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

將文件名插入 header 行是一個棘手的問題, paste是合並文件內容的簡單方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM