使用Pandas重塑长格式多值数据帧

Kyl*_*ndt 2 python pivot reshape pandas

我想转:

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
Run Code Online (Sandbox Code Playgroud)

进入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 ~ ...))
Run Code Online (Sandbox Code Playgroud)

以上数据将是可变的(即ColumnName的值并不总是相同的,可能会有更多或更少的名称,以及不同的名称).

Cha*_*She 7

有一个meltpandas.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
Run Code Online (Sandbox Code Playgroud)

这些列最终是一个MultiIndex,但如果这是一个交易破坏者,只需将名称连接起来并使其成为常规索引.