需要帮助转动熊猫表

时间:2016-09-21 18:00:27

标签: python pandas numpy

print df
             output_time   position
0    2016-01-01 08:00:01      start
1    2016-01-01 08:07:53        end
2    2016-01-01 08:07:54      start
3    2016-01-01 08:09:23        end
4    2016-01-01 08:09:24      start
5    2016-01-01 08:32:51        end

我需要这样的输出(df保持数据帧类型而不是系列类型:

print df
              start                   end
2016-01-01 08:00:01   2016-01-01 08:07:53
2016-01-01 08:07:54   2016-01-01 08:09:23
2016-01-01 08:09:24   2016-01-01 08:32:51

df = df.pivot_table(columns="output_time", values="position")出现以下错误:

  

引发DataError('没有要聚合的数字类型')       pandas.core.base.DataError:没有要聚合的数字类型

2 个答案:

答案 0 :(得分:2)

使用pivot代替pivot_table

# Perform the pivot.
df = df.pivot(index=df.index//2, columns='position')

# Format the columns.
df.columns = df.columns.droplevel(0).rename(None)

结果输出:

                  end               start
0 2016-01-01 08:07:53 2016-01-01 08:00:01
1 2016-01-01 08:09:23 2016-01-01 08:07:54
2 2016-01-01 08:32:51 2016-01-01 08:09:24

答案 1 :(得分:0)

cumcount另一个使用unstack创建新index值的解决方案:

df['g'] = df.groupby('position').cumcount()
df1 = df.set_index(['g','position']).unstack()
df1.columns = df1.columns.droplevel(0)
df1.columns.name = None
df1.index.name = None

print (df1)
                  end               start
0 2016-01-01 08:07:53 2016-01-01 08:00:01
1 2016-01-01 08:09:23 2016-01-01 08:07:54
2 2016-01-01 08:32:51 2016-01-01 08:09:24