每隔第二行和第三行移动到第一行的末尾

Move every 2nd and 3rd row to the end of the 1st row

我不太确定如何解释这个,但我有一个传播sheet,我在没有 headers 的情况下进入 python,以及与每个独特的数据相关的数据id 被分成三行,因此此时的列在读到 'flattened' 之前没有任何意义。格式是一致的,但我很难弄清楚我需要搜索什么才能获得我正在寻找的输出。

如果这是在 Excel 中,我基本上会将第二行和第三行复制到第 1 行的右侧, 然后删除第 2 行和第 3 行并重复直到我到达 sheet.

的底部

这就是我接收数据的方式

id1 criteria1   criteria2   criteria3
criteria4   criteria5   criteria6   criteria7
criteria8   criteria9   criteria10  criteria11
id2 criteria1   criteria2   criteria3
criteria4   criteria5   criteria6   criteria7
criteria8   criteria9   criteria10  criteria11
id3 criteria1   criteria2   criteria3
criteria4   criteria5   criteria6   criteria7
criteria8   criteria9   criteria10  criteria11

这就是我想要实现的目标

id1 criteria1   criteria2   criteria3   criteria4   criteria5   criteria6   criteria7   criteria8   criteria9   criteria10  criteria11
id2 criteria1   criteria2   criteria3   criteria4   criteria5   criteria6   criteria7   criteria8   criteria9   criteria10  criteria11
id3 criteria1   criteria2   criteria3   criteria4   criteria5   criteria6   criteria7   criteria8   criteria9   criteria10  criteria11

看看这是否能让您走上正确的轨道。 警告:鉴于源数据的模糊性(如评论中所述),很难提供完整的解决方案……但请试一试。

使用您的示例输入,我将其转换为一个简单的 CSV 文件。

输入 CSV:

id1,criteria1,criteria2,criteria3
criteria4,criteria5,criteria6,criteria7
criteria8,criteria9,criteria10,criteria11
id2,criteria1,criteria2,criteria3
criteria4,criteria5,criteria6,criteria7
criteria8,criteria9,criteria10,criteria11
id3,criteria1,criteria2,criteria3
criteria4,criteria5,criteria6,criteria7
criteria8,criteria9,criteria10,criteria11

转化率:

注意:[3, 12](或[rows, columns])的整形值需要根据输入数据的形状进行修改。

import pandas as pd

array = pd.read_csv('folded.csv', header=None).to_numpy().reshape([3, 12])
pd.DataFrame(array).to_csv('unfolded.csv', index=False, header=False)

输出 CSV:

id1,criteria1,criteria2,criteria3,criteria4,criteria5,criteria6,criteria7,criteria8,criteria9,criteria10,criteria11
id2,criteria1,criteria2,criteria3,criteria4,criteria5,criteria6,criteria7,criteria8,criteria9,criteria10,criteria11
id3,criteria1,criteria2,criteria3,criteria4,criteria5,criteria6,criteria7,criteria8,criteria9,criteria10,criteria11