gpt4 book ai didi

python - 将多索引/多级数据框减少为单索引、单级

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:17 25 4
gpt4 key购买 nike

假设我有一个如下所示的数据框:

>>> df
Year MPG VehicleType FuelType
0 2000 20.5 Car Gas
1 2009 22.3 Car Gas
2 2017 50.9 Car Gas
3 2000 14.7 Car Diesel
4 2009 18.0 Car Diesel
5 2017 22.2 Car Diesel

我需要根据 FuelType 列的值将 VehicleType 列拆分为两列,使用 Year 列作为索引.我使用 pivot_table 正确拆分列。

>>> pd.pivot_table(df, columns=['VehicleType', 'FuelType'], values='MPG', index=['Year'])
VehicleType Car
FuelType Diesel Gas
Year
2000 14.7 20.5
2009 18.0 22.3
2017 22.2 50.9

这很好,但它会产生一个多索引数据框,出于我的目的,我不想要它。

我试图得到一个看起来像这样的东西的结果:

Year Car_Diesel_MPG Car_Gas_MPG
2000 14.7 20.5
2009 18.0 22.3
2017 22.2 50.9

我为实现这一目标所做的努力导致了一些看起来非常难看的代码。有没有简单的方法可以做到这一点?

最佳答案

使用set_axismapjoin

df2.set_axis(df2.columns.map('_'.join), axis=1, inplace=False).add_suffix('_MPG')

Car_Diesel_MPG Car_Gas_MPG
Year
2000 14.7 20.5
2009 18.0 22.3
2017 22.2 50.9

groupbydict

m = {t: '_'.join(t) for t in df2.columns}
df2.groupby(m, axis=1).mean().add_suffix('_MPG')

Car_Diesel_MPG Car_Gas_MPG
Year
2000 14.7 20.5
2009 18.0 22.3
2017 22.2 50.9

其中任何一个都可以reset_index

m = {t: '_'.join(t) for t in df2.columns}
df2.groupby(m, axis=1).mean().add_suffix('_MPG').reset_index()

Year Car_Diesel_MPG Car_Gas_MPG
0 2000 14.7 20.5
1 2009 18.0 22.3
2 2017 22.2 50.9

groupby 而不是 pivot_table

df.groupby(
['Year', df.VehicleType.str.cat(df.FuelType, sep='_').add('_MPG').values]
).MPG.sum().unstack().reset_index()

Year Car_Diesel_MPG Car_Gas_MPG
0 2000 14.7 20.5
1 2009 18.0 22.3
2 2017 22.2 50.9

关于python - 将多索引/多级数据框减少为单索引、单级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868061/

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