2012-10-21 71 views
2

我想談談:重塑長格式多值Dataframes與熊貓

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 

進入一個數據幀,其中的DateTime是否是唯一的(指數)和列:

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的融化/演員而不進入分層索引或堆棧數據框。我似乎無法得到上面玩堆棧/斯塔克,熔化,或pivot/pivot_table - 有沒有一個好辦法做到這一點?

作爲一個例子,作爲R將是這樣的:

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

上述數據將是可變的(即的ColumnName的值並不總是相同的事情,可能有更多或更少的他們和不同的名字)。

+0

如果只有'Avg'列的值,我可以得到我想要的:'.pivot('DateTime','ColumnName','Avg')'。但由於存在多種價值,我無法想出一種獲得「平面」版本的方法。 –

回答

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 

列最終成爲一個多指標,但如果這是你一個大忌只是CONCAT的名字,使之成爲正規指數。

+0

您如何可以將名稱連接起來,這就是我所困惑的地方(「基本上,我想模仿R的融化/演員而不進入分級索引或堆疊數據框」 - 所以已經意識到了這一點,我感到困惑的是如何將這個變成一個扁平的結構,並且列名相連。 –

+0

'result.columns = ['_'。join(x)for result.columns]' –

+0

仍然不遵循如何使用thta result.columns for所需的結果是: -/ –