【问题标题】:reshape dataframe in pandas to layout data horizontally重塑熊猫中的数据框以水平布局数据
【发布时间】:2016-07-29 16:32:07
【问题描述】:

我有以下数据框:

data = [['label1', 1234], ['label1', 12345], ['label2', 2345], ['label2', 4567], ['label3', 123], ['label2', 4589]]
pd.DataFrame(data, columns=['label', 'id'])

输出:

    label   id
0   label1  1234
1   label1  12345
2   label2  2345
3   label2  4567
4   label3  123
5   label2  4589

我想将数据重塑为以下内容:

    label   id1    id2    id3
0   label1  1234   12345  None
1   label2  2345   4567   4589
2   label3  123    None   None

基本上将ids水平布局,并为ids添加唯一标签,每一行都以label为key。

我正在研究 pandas 中的旋转操作,但我似乎无法弄清楚我需要以我需要的格式输出数据的确切咒语。

任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas reshape


    【解决方案1】:

    分配一个新列来枚举id,然后使用pivot:

    (df.assign(ids='id' + (df.groupby('label').cumcount()+1).astype(str))
       .pivot(index='label', columns='ids', values='id'))
    Out:
    ids        id1      id2     id3
    label                          
    label1  1234.0  12345.0     NaN
    label2  2345.0   4567.0  4589.0
    label3   123.0      NaN     NaN
    

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多