Pandas透视表创建NaN

5

给定这个样本数据框,

         Cents      Date
MN                                         
Shop        0.03  01012019
Shop        0.22  01012019
Shop        0.12  01012019
Shop        0.08  02012019
Shop        0.02  02012019
Shop        0.02  02012019
Shop        0.02  03012019
Shop        0.09  03012019
Shop        0.11  03012019
Shop        0.02  04012019
Shop        0.03  04012019
Shop        0.04  04012019

我想将我的数据框重新整形为

enter image description here

到目前为止我尝试了什么:

  1. Drop the index of the original sample dataframe

    df1 = df.reset_index(drop=True)
    
  2. Pivot the sample dataframe,

    df1.pivot(index=None, columns='Date', values='Cents')
    

在进行数据透视后,我无法获得所需的结果,以下是我得到的内容:

enter image description here

有人能告诉我为什么会发生这种情况吗?我相当确定它与数据透视表如何与我的数据框架配合有关(也许我需要一个唯一的索引,在这种情况下我无法拥有?)。如果您能让我知道我应该如何继续,我将不胜感激。

谢谢。

1个回答

6

你可能需要 groupby + cumcount 来创建一个额外的键值

Yourdf= df.assign(key=df.groupby('Date').cumcount()).pivot(index='key',columns='Date',values='Cents')
Yourdf
Out[37]: 
Date  1012019  2012019  3012019  4012019
key                                     
0        0.03     0.08     0.02     0.02
1        0.22     0.02     0.09     0.03
2        0.12     0.02     0.11     0.04

嗨Ben,谢谢!出于好奇,你能否解释一下为什么我需要一个额外的键?我的透视代码中的index='x'不是做同样的事情吗?你的输出结果与我想要的略有不同 - 我想在日期和值之间有一个“Cents”行,这可能吗? - SunnyBoiz
@SunnyBoiz 这里的问题是,每个日期之间没有共同的键,这就是为什么原始索引中有那么多NaN的原因。 - BENY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接