【发布时间】:2018-03-16 14:29:52
【问题描述】:
我有一个由 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
我想旋转这个数据框,使“名称”变成列,而行由“值”填充。
目前我尝试了以下方法:
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。
关于如何解决这个问题的任何指示?对不起,如果这是一个菜鸟问题,或者如果您需要我编辑我的问题/示例,请告诉我。
【问题讨论】:
-
尝试打印更多行。它们并不都是 NaN,只是在没有对应值的地方。根据您发布的内容,我在选定的单元格中获得了数值。
-
当我打印出更多内容时,它们都显示为 NaN。如果我尝试
.dropna(),所有行都会被删除。 -
再一次,根据您在此处发布的内容,运行精确的
pivot代码(修复最后缺少的单引号),有一些非 NA 值。小心.dropna。根据docs,如果存在 any NA,它就会下降。传入how='all'并且没有为我删除任何列。