4

パンダでのピボットに少し問題があります。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")

ピボットしたいデータ列の数があるためです(それぞれを引数としてリストしたくない)。デフォルトでは、ピボットはデータフレームの残りの列をピボットすると思います。ありがとう。

4

3 に答える 3

3

どのように DataFrame.pivot を呼び出していますか?また、日付列のデータ型は何ですか?

あなたのものに似た DataFrame があるとします。日付列には 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
于 2012-07-09T18:46:31.230 に答える
1

自分の質問に答えただけです。古い Sybase モジュールを使用してデータをインポートしていましたが、mxDatetime の古い DateTimeType オブジェクトを使用していたと思います。そのモジュールでは、2011 年 1 月 1 日の日時は、2011 年 1 月 1 日の別の日時と必ずしも一致しません (たとえば、各日時は一意でした)。したがって、データフレームのピボットは、各列の値をインデックス内で一意のものとして扱いました。

助けてくれてありがとう。

于 2012-07-10T17:28:46.550 に答える