我有一个由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。
有关如何解决此问题的任何指示?很抱歉,如果这是一个菜鸟问题,或者如果您需要我编辑我的问题/示例,请告诉我。
答案 0 :(得分:0)
试
pd.pivot_table(df[['Id', 'Name', 'Value']],
index='Id',
columns=['Name'],
values=['Value'],
aggfunc=lambda x: x)
这假定您不重复值。否则,您需要编辑aggfunc
以进行正确的聚合