gpt4 book ai didi

python - Pandas 如何将 3 组的列旋转成行

转载 作者:行者123 更新时间:2023-12-04 03:43:11 25 4
gpt4 key购买 nike

我有一个需要转换和旋转的 pandas df。每个季节都有 3 列与之关联(开始、结束和费率)。我希望旋转这些列,最后只有 3 列开始、结束和速率 enter image description here

df:

ID S1start  S1end  Rate  S2start  S2end   Rate  S3start  S3end  Rate  S4start  S4end  Rate
1 1/1/21 1/31/21 80 2/1/21 2/28/21 85 3/1/21 3/31/21 90 4/1/21 4/30/21 95

最后:

 ID  Start     End   Rate
1 1/1/21 1/31/21 80
1 2/1/21 2/28/21 85
1 3/1/21 3/31/21 90
1 4/1/21 4/30/21 95

最佳答案

您可以将 df.filterpd.concat 一起使用:

In [589]: start = df.stack().filter(like='start').reset_index()[0]    
In [590]: end = df.stack().filter(like='end').reset_index()[0]
In [591]: rate = df.stack().filter(like='Rate').reset_index()[0]

In [594]: x = pd.concat([start.rename('Start'), end.rename('End'), rate.rename('Rate')], 1)

假设您有 2 个静态列:ID, PropCode。您可以像这样将这些列附加到 x:

In [640]: x[['ID', 'PropCode']] = df[['ID', 'PropCode']].values.tolist() * len(x)

In [641]: x
Out[641]:
Start End Rate ID PropCode
0 1/1/21 1/31/21 80 1 52032
1 2/1/21 2/28/21 85 1 52032
2 3/1/21 3/31/21 90 1 52032
3 4/1/21 4/30/21 95 1 52032

关于python - Pandas 如何将 3 组的列旋转成行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65583568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com