我有如下数据框
A B C D E F G H G H I J K
1 2 3 4 5 6 7 8 9 10 11 12 13
我想要这样的结果
A B C D E F G H
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 9
1 2 3 4 5 6 7 10
1 2 3 4 5 6 7 11
1 2 3 4 5 6 7 12
1 2 3 4 5 6 7 13
就像结果列“G~K”位于“H”列下
我该怎么做?
最佳答案
您需要使用 cummax
调整列,然后在 melt
之后,我们使用 cumcount
创建附加键,然后在此处进行 reshape ,我正在使用 unstack
,您可以使用 pivot
, pivot_table
s=pd.Series(df.columns)
s[(s>='H').cummax()==1]='H'
df.columns=s
df=df.melt()
yourdf=df.set_index(['variable',df.groupby('variable').cumcount()]).\
value.unstack(0).ffill()
yourdf
variable A B C D E F G H
0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0
1 1.0 2.0 3.0 4.0 5.0 6.0 7.0 9.0
2 1.0 2.0 3.0 4.0 5.0 6.0 7.0 10.0
3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 11.0
4 1.0 2.0 3.0 4.0 5.0 6.0 7.0 12.0
5 1.0 2.0 3.0 4.0 5.0 6.0 7.0 13.0
关于python - 如何在数据框中将列分成多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544844/