2

私はターンしたい:

DateTime                     ColumnName        Min      Avg      Max                                                                                      
2012-10-14 11:29:23.810000   Percent_Used       24       24       24
2012-10-14 11:29:23.810000   Current_Count  254503   254503   254503
2012-10-14 11:29:23.810000   Max           1048576  1048576  1048576
2012-10-14 11:34:23.813000   Percent_Used       24       24       24
2012-10-14 11:34:23.813000   Current_Count  254116   254116   254116
2012-10-14 11:34:23.813000   Max           1048576  1048576  1048576

DateTimes が一意 (インデックス) で、列が次のデータフレームに:

DataTime、Percent_Used_Min、Percent_Used_Avg、Percent_Used_Max、Current_Count_Min、Current_Count_Avg、Current_Count_Max、Max_Min、Max_Avg、Max_Max

基本的に、階層的なインデックス作成やスタックされたデータフレームに入ることなく、R のメルト/キャストを模倣したいと考えています。stack/unstack、melt、または pivot/pivot_table で上記の操作を正確に行うことができないようです -- これを行う良い方法はありますか?

例として、R では次のようになります。

dynamic_melt = melt(dynamic, id = c("DateTime", "ColumnName"))
recast = data.frame(cast(dynamic_melt, DateTime ~ ...))

上記のデータは可変です (つまり、ColumnName の値は常に同じであるとは限りません。それらの値は多かれ少なかれ、異なる名前である可能性があります)。

4

1 に答える 1

7

がありmeltますpandas.core.reshape

In [52]: melted = reshape.melt(df, id_vars=['DateTime', 'ColumnName'])

In [53]: melted.set_index(['DateTime', 'ColumnName', 'variable']).value.unstack([1, 2])
Out[53]: 
ColumnName                  Percent_Used  Current_Count      Max  Percent_Used  Current_Count      Max  Percent_Used  Current_Count      Max
variable                             Min            Min      Min           Avg            Avg      Avg           Max            Max      Max
DateTime                                                                                                                                    
2012-10-14 11:29:23.810000            24         254503  1048576            24         254503  1048576            24         254503  1048576
2012-10-14 11:34:23.813000            24         254116  1048576            24         254116  1048576            24         254116  1048576

列は最終的に MultiIndex になりますが、それが問題になる場合は、名前を連結して通常の Index にします。

于 2012-10-22T00:42:23.627 に答える