基于重复的数据框的折叠/转置列-大熊猫

问题描述 投票:0回答:3

我有这样的数据帧sample_df

   id   pd  pd_dt      pd_tp    pd.1    pd_dt.1     pd_tp.1 pd.2    pd_dt.2     pd_tp.2
0  1    100 per year   468      200     per year    400     300     per year    320
1  2    100 per year   60       200     per year    890     300     per year    855

我需要这样的输出,

id pd   pd_dt     pd_tp
1  100  per year  468
1  200  per year  400
1  300  per year  320
2  100  per year  60
2  200  per year  890
2  300  per year  855

我尝试了以下内容,

sample_df.stack().reset_index().drop('level_1',axis=1)

这不起作用。我有pdpd_dtpd_tp.1.2 ..值重复。

我有如何实现输出?

python-3.x pandas
3个回答
2
投票

您想要pd.wide_to_long,但是要进行一些调整,因为您的前几列与其余的列不共享相同的模式:


1
投票

您可以这样做:


1
投票

您可以使用numpy split将其拆分为n个数组并将它们重新合并在一起。然后,通过新数据框中的行数重复id列。

© www.soinside.com 2019 - 2024. All rights reserved.