【问题标题】:How to combine every 4 lines in a txt file?如何合并一个txt文件中的每4行?
【发布时间】:2022-11-16 21:53:46
【问题描述】:

我有一个 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 行。所需的输出应如下所示:

我想要这样的东西:

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 中执行此操作?

谢谢你的任何建议, 巴里斯

我尝试了各种帖子下分享的方法,但没有一个真正起作用。

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow Peclet!虽然您能否提供您想要的结果的一部分?只是一小部分显示您希望数据看起来像什么。
  • 您好,欢迎来到 SO。到目前为止你尝试过吗?当我们知道您尝试过什么时,我们会更容易为您提供帮助
  • 'data1data2空格或制表符分开了吗?
  • 您好,感谢您的回复。我也附上了我想要得到的东西。我的数据中没有标签。每个元素仅用一个空格分隔。
  • 您是否有意尝试在 12 点进行比赛?

标签: python pandas combine txt


【解决方案1】:

你可以尝试这样的事情:

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 + "
")  # save them to a list

如果数字不能被 4 整除,则您需要为任何尾随行添加一些额外的处理。

【讨论】:

    【解决方案2】:

    如果你有很多项目组成一个矩形数组,你可以使用 numpy reshape:

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

    输出:

           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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 2015-05-26
      • 2015-02-06
      • 2019-10-14
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多