Pandas Pivot导致所有值都是NaN

时间:2018-03-16 14:29:52

标签: python pandas dataframe

我有一个由12列和900个条目组成的pandas数据框,如下所示:

In [1]: df

Out[2]: 

    Id  BestInGen   Ceiling Fitness Floor   Generation  Name    Precision   Runid   SolutionId  Timestamp                Value
0   1   True    2.5 2.416582e+11    0.500   1   H1001Thickness1 0.010   20180214142319  4   2018-02-14 14:28:41.391908  0.500
1   2   False   0.1 2.830500e+11    0.015   1   H6512Diameter8  0.005   20180214142319  3   2018-02-14 14:28:41.423109  0.015
2   3   False   2.5 2.830500e+11    0.500   1   H2201Thickness1 0.010   20180214142319  3   2018-02-14 14:28:41.423109  0.500
3   4   False   0.1 2.830500e+11    0.015   1   H2201Diameter1  0.005   20180214142319  3   2018-02-14 14:28:41.423109  0.015
4   5   False   2.5 2.830500e+11    0.500   1   H2201Thickness2 0.010   20180214142319  3   2018-02-14 14:28:41.423109  0.500

我想透过这个数据框架,使'Name'变成列,并用'Value'填充行。

目前我尝试过以下方法:

dfPivot = df.pivot(index='Id',columns='Name',values='Value)

我认为这会产生我需要的结果,而其他线程的情况就是如此。但在我的情况下,会发生以下情况

In [3]: dfPivot

Out [4]: 


Name    H1001Diameter1  H1001Diameter10 H1001Diameter12
Id
1       Nan             Nan             Nan

同样一直持续到数据帧的末尾,所有值都是Nan。原始数据类型是float64,原始数据中没有Nans。

有关如何解决此问题的任何指示?很抱歉,如果这是一个菜鸟问题,或者如果您需要我编辑我的问题/示例,请告诉我。

1 个答案:

答案 0 :(得分:0)

pd.pivot_table(df[['Id', 'Name', 'Value']],
               index='Id',
               columns=['Name'],
               values=['Value'],
               aggfunc=lambda x: x)

这假定您不重复值。否则,您需要编辑aggfunc以进行正确的聚合