我有以下 pandas 数据框。
ID Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
1 A B C A B C A B C
2 D E F D E F D E F
我想通过重组每三列的值来得到下表。
ID Col_1 Col_2 Col_3
1 A B C
A B C
A B C
2 D E F
D E F
D E F
或者
ID Col_1 Col_2 Col_3
1 A B C
1 A B C
1 A B C
2 D E F
2 D E F
2 D E F
有什么有效的方法吗?我尝试在 StackOverflow 社区找到类似的示例,但没有找到。有的话可以指点我一下。
感谢任何帮助!
最佳答案
您可以使用DataFrame.stack
具有由整数和模除法创建的所有不带 ID
的 MultiIndex
列:
df = df.set_index('ID')
c = np.arange(len(df.columns))
df.columns = [c // 3, c % 3]
df1 = (df.stack()
.reset_index(level=1, drop=True)
.rename(columns= lambda x: f'Col_{x+1}')
.reset_index())
print (df1)
ID Col_1 Col_2 Col_3
0 1 A A A
1 1 B B B
2 1 C C C
3 2 D D D
4 2 E E E
5 2 F F F
关于python - 根据列数重构 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60527174/