2017-08-25 91 views
0

給定一個熊貓時間序列數據幀由分組丟失的數據「UUT」GROUPBY時間序列填充0

df 
Out[64]: 
         UUT Sum 
Date_Time      
2017-04-28 18:48:16 uut-01 2 
2017-04-28 18:48:18 uut-02 2 
2017-04-28 18:48:19 uut-03 2 

我想使用重新索引來創建以1秒間隔的時間系列,和在所述間隙與0值填僅列求和,類似什麼是顯示如下:

df 
Out[64]: 
         UUT Sum 
Date_Time      
2017-04-28 18:48:16 uut-01 2 
2017-04-28 18:48:16 uut-02 0 
2017-04-28 18:48:16 uut-03 0 
2017-04-28 18:48:17 uut-01 2 
2017-04-28 18:48:17 uut-02 0 
2017-04-28 18:48:17 uut-03 0 
2017-04-28 18:48:18 uut-01 0 
2017-04-28 18:48:18 uut-02 2 
2017-04-28 18:48:18 uut-03 0 
2017-04-28 18:48:19 uut-01 0 
2017-04-28 18:48:19 uut-02 0 
2017-04-28 18:48:19 uut-03 2 

我用重建索引,但它裝滿了「UUT」和「點心」零。 如何使用uut名稱而不是零填充UUT列的缺失時間戳,並且只填充零到「Sum」列?

idx = pd.date_range('2017-04-28 18:48:16', '2017-04-28 18:48:19', freq='1s')  
grouped = df.groupby('UUT') 
grouped.get_group('uut-01').reindex(idx, fill_value=0) 

grouped.get_group('uut-01') 

2017-04-28 18:48:16 uut-01 2 
2017-04-28 18:48:17 0   0 
2017-04-28 18:48:18 0   0 
2017-04-28 18:48:19 0   0 

基於Kyle的回答,我得到了它的最後工作:

df = df.set_index([df.index, 'UUT']) 
idx = pd.MultiIndex.from_product(df.index.levels, names=['Date_Time', 'UUT']) 
df = df.reindex(index=idx, fill_value=0) 
df.reset_index(level=[1]) #convert back to single index 
grouped = df.groupby('UUT') 
+0

這是更好地前'groupby' – Wen

+0

提供的數據我試圖GROUPBY前重新索引,它填補所有有零的列。我認爲先做一個group,它會將每個UUT名稱視爲輔助標題並忽略它 – user97662

回答

1
df = df.set_index(['time', 'uut']) 
idx = pd.MultiIndex.from_product([df.index, df.uut]) 
df.reindex(index=idx, fill_value=0) 

        sum 
18:48:16 uut-01 2 
     uut-02 0 
     uut-03 0 
18:48:18 uut-01 0 
     uut-02 2 
     uut-03 0 
18:48:19 uut-01 0 
     uut-02 0 
     uut-03 2 
+0

我不得不稍微修改才能使其工作。 – user97662