大熊猫枢转一个数据帧,重复行[重复](pandas pivoting a dataframe, du

2019-06-26 04:02发布

这个问题已经在这里有一个答案:

  • 如何转动一个数据帧 1回答

我在与大熊猫旋转了一点小麻烦。 该dataframe我工作的样子(日期,地点,数据):

dates    location    data
date1       A         X
date2       A         Y
date3       A         Z
date1       B         XX
date2       B         YY

基本上,我试图在转动的位置,就像一个数据帧到结束:

dates   A    B    C
date1   X    XX   etc...
date2   Y    YY
date3   Z    ZZ 

不幸的是,当我转动,指数,这相当于原来的日期栏,并没有改变,我也得到:

dates  A   B   C
date1  X   NA  etc...
date2  Y   NA
date3  Z   NA
date1  NA  XX
date2  NA  YY

有谁知道我该如何解决这个问题,以获得数据帧甲我在寻找?

我当前调用枢轴这样:

df.pivot(index="dates", columns="location")

因为我有数据列我想转动的#(不想列出每一个作为参数)。 我相信默认轴转动的数据帧列的其余部分。 谢谢。

Answer 1:

如果你有多个数据列,调用枢没有值的列应该给你一个多指标作为列的枢轴转动架:

In [3]: df
Out[3]: 
  columns     data1     data2 index
0       a -0.602398 -0.982524     x
1       a  0.880927  0.818551     y
2       b -0.238849  0.766986     z
3       b -1.304346  0.955031     x
4       c -0.094820  0.746046     y
5       c -0.835785  1.123243     z

In [4]: df.pivot('index', 'columns')
Out[4]: 
            data1                         data2                    
columns         a         b         c         a         b         c
index                                                              
x       -0.602398 -1.304346       NaN -0.982524  0.955031       NaN
y        0.880927       NaN -0.094820  0.818551       NaN  0.746046
z             NaN -0.238849 -0.835785       NaN  0.766986  1.123243


Answer 2:

你是如何调用DataFrame.pivot什么数据类型是日期列?

假设我有一个数据帧,它类似于你的,日期列包含datetime对象:

In [52]: df
Out[52]: 
       data                dates loc
0  0.870900  2000-01-01 00:00:00   A
1  0.344999  2000-01-02 00:00:00   A
2  0.001729  2000-01-03 00:00:00   A
3  1.565684  2000-01-01 00:00:00   B
4 -0.851542  2000-01-02 00:00:00   B


In [53]: df.pivot('dates', 'loc', 'data')
Out[53]: 
loc                A         B
dates                         
2000-01-01  0.870900  1.565684
2000-01-02  0.344999 -0.851542
2000-01-03  0.001729       NaN


Answer 3:

只是回答我自己的问题。 我是用旧的Sybase模块导入数据,我认为它曾经从mxDatetime旧DateTimeType对象。 在该模块,2011年1月1日的日期时间并不一定等于2011年1月1日的另一日期时间(例如,每个日期时间是唯一的)。 因此数据帧枢轴处理在指数中,唯一的每一列的值。

谢谢您的帮助。



文章来源: pandas pivoting a dataframe, duplicate rows [duplicate]