簡體   English   中英

如何合並一個txt文件中的每4行?

[英]How to combine every 4 lines in a txt file?

我有一個 txt.file 看起來像這樣:

data1  data2  data3  
data4  data5  data6  
data7  data8  data9  
data10 data11 data12 
data13 data14 data15 
data16 data17 data18 
data19 data20 data21
data22 data23 data24 
.
.
.

我想重新排列我的 txt 文件,以便從 data1 到 data12 將是 1 行,而 data13 到 data24 將是第二行,依此類推。 它基本上是將每 4 行合並為 1 行。 所需的 output 應如下所示:

我想要這樣的東西:

data1  data2  data3  data4  data5  data6  data7  data8  data9  data10 data11 data12 
data13 data14 data15 data16 data17 data18 data19 data20 data21 data22 data23 data24

我如何在 Python 中執行此操作?

謝謝你的任何建議,巴里斯

我嘗試了各種帖子下分享的方法,但沒有一個真正起作用。

你可以嘗試這樣的事情:

with open("text.txt" "r") as f:  # load data
    lines = f.readlines()

newlines = []
for i in range(0, len(lines), 4):  # step through in blocks of four
    newline = lines[i].strip() + " " + lines[i+1].strip() + " " + lines[i+2].strip() + " " + lines[i+3].strip() + " " # add the lines together after stripping the newline characters at the end
    newlines.append(newline + "\n")  # save them to a list

如果數字不能被 4 整除,則您需要為任何尾隨行添加一些額外的處理。

如果你有多個項目組成一個矩形數組,你可以使用 numpy 整形:

N = 4
df = pd.read_csv('your_file', sep='\s+', header=None)
df2 = pd.DataFrame(df.to_numpy().reshape(-1, N*df.shape[1]))

否則,需要進行 pandas 整形:

N = 4
df = (pd.read_csv('your_file', sep='\s+', header=None)
   .stack(dropna=False).to_frame()
   .assign(idx=lambda d: d.index.get_level_values(0)//N,
           col=lambda d: d.groupby('idx').cumcount(),
          )
   .pivot(index='idx', columns='col', values=0)
   
)

Output:

       0       1       2       3       4       5       6       7       8       9       10      11
0   data1   data2   data3   data4   data5   data6   data7   data8   data9  data10  data11  data12
1  data13  data14  data15  data16  data17  data18  data19  data20  data21  data22  data23  data24

您可以使用numpy 這只是對您的數據進行一次reshape操作

import numpy as np

# data.txt:
# data1  data2  data3  
# data4  data5  data6  
# data7  data8  data9  
# data10 data11 data12 
# data13 data14 data15 
# data16 data17 data18 
# data19 data20 data21
# data22 data23 data24

data = np.loadtxt('data.txt', dtype='str')
data_reshaped = data.reshape((2, 12))
print(data_reshaped)

暫無
暫無

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

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