python - Pandas :将列透视到标题

标签 python pandas pivot

我试图将列中的值转换为列标题,但保留其余数据。这是我的完整代码,以及我能找到的最接近的代码。唯一的问题是我不知道如何保留 end 列:

import pandas as pd

starts = pd.date_range(start = '1/1/2017', freq = '31d', periods = 4).tolist()
ends = pd.date_range(start = '1/31/2017', freq = '31d', periods = 4).tolist()

df = pd.DataFrame({ 'id':['XXX','XXX','XXX','XXX','YYY','YYY','YYY','YYY'], 
                    'start': starts + starts,
                    'end': ends + ends,
                    'type':['car','car','car','car','truck','truck','truck','truck']
                    }, columns = ['id','start','end','type'])

原始数据框:

    id      start        end   type
0  XXX 2017-01-01 2017-01-31    car
1  XXX 2017-02-01 2017-03-03    car
2  XXX 2017-03-04 2017-04-03    car
3  XXX 2017-04-04 2017-05-04    car
4  YYY 2017-01-01 2017-01-31  truck
5  YYY 2017-02-01 2017-03-03  truck
6  YYY 2017-03-04 2017-04-03  truck
7  YYY 2017-04-04 2017-05-04  truck

我最近的当前枢轴尝试:

print df.pivot(index = 'start', columns = 'id', values = 'type').reset_index()

当前输出:

id      start  XXX    YYY
0  2017-01-01  car  truck
1  2017-02-01  car  truck
2  2017-03-04  car  truck
3  2017-04-04  car  truck

期望的输出:

        start         end  XXX    YYY
0  2017-01-01  2017-01-31  car  truck
1  2017-02-01  2017-03-03  car  truck
2  2017-03-04  2017-04-03  car  truck
3  2017-04-04  2017-05-04  car  truck

我都试过了 thisthis , 没有成功。

如有任何帮助,我们将不胜感激。

最佳答案

pd.pivot_table(df,index=['start','end'],columns='id',values='type',aggfunc='sum').reset_index()
Out[1587]: 
id       start         end  XXX    YYY
0   2017-01-01  2017-01-31  car  truck
1   2017-02-01  2017-03-03  car  truck
2   2017-03-04  2017-04-03  car  truck
3   2017-04-04  2017-05-04  car  truck

关于python - Pandas :将列透视到标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47186040/

相关文章:

python - statsmodels 中有什么方法可以获得回归中使用的最终观察结果?

python - Python 中删除重复项

python - 来自时间序列数据框的 matplotlib

sql - 拥有带有标志值的唯一记录

python - 使用树莓派的gpio引脚控制风扇

python - ncurses 和白底黑字

python - 将 Matplotlib 与 Dask 结合使用

python - 计算跨多天的 pandas 数据框中每日最小和最大列数

python - 在 Spark RDD 和/或 Spark DataFrames 中 reshape /透视数据

excel - VBA根据数据透视表中的背景颜色更改字体颜色