2017-09-02 106 views
0

下面我有一個熊貓的數據幀中的條件語句重新取樣:(它也有其他列,但這些都是重要的)日期欄是指數你怎麼每天在熊貓

  Number_QA_VeryGood Number_Valid_Cells Time 
Date              
2015-01-01     91     92 18:55 
2015-01-02     6     6 18:00 
2015-01-02     13     13 19:40 
2015-01-03     106     106 18:45 
2015-01-05     68     68 18:30 
2015-01-06     111     117 19:15 
2015-01-07     89     97 18:20 
2015-01-08     86     96 19:00 
2015-01-10     9     16 18:50 

我需要每天重新採樣,前兩列將用sum進行重採樣。 最後一列需要查看Number_Valid_Cells列的每日最高值,並將該時間用於該值。

例如輸出應該是:(02年1月2日爲線,改變)

  Number_QA_VeryGood Number_Valid_Cells Time 
Date              
2015-01-01     91     92 18:55 
2015-01-02     19     19 19:40 
2015-01-03     106     106 18:45 
2015-01-05     68     68 18:30 
2015-01-06     111     117 19:15 
2015-01-07     89     97 18:20 
2015-01-08     86     96 19:00 
2015-01-10     9     16 18:50 

什麼是得到這個工作的最佳途徑。

回答

1

或者你可以嘗試

df.groupby(df.index).agg({'Number_QA_VeryGood':'sum','Number_Valid_Cells':'sum','Time':'last'}) 
Out[276]: 
      Time Number_QA_VeryGood Number_Valid_Cells 
Date              
2015-01-01 18:55     91     92 
2015-01-02 19:40     19     19 
2015-01-03 18:45     106     106 
2015-01-05 18:30     68     68 
2015-01-06 19:15     111     117 
2015-01-07 18:20     89     97 
2015-01-08 19:00     86     96 
2015-01-10 18:50     9     16 

更新:sort_values第一

df.sort_values('Number_Valid_Cells').groupby(df.sort_values('Number_Valid_Cells').index)\ 
    .agg({'Number_QA_VeryGood':'sum','Number_Valid_Cells':'sum','Time':'last'}) 

    Out[314]: 
      Time Number_QA_VeryGood Number_Valid_Cells 
Date              
1/1/2015 18:55     91     92 
1/10/2015 18:50     9     16 
1/2/2015 16:40#here.changed  19     19 
1/3/2015 18:45     106     106 
1/5/2015 18:30     68     68 
1/6/2015 19:15     111     117 
1/7/2015 18:20     89     97 
1/8/2015 19:00     86     96 

數據輸入:

   Number_QA_VeryGood Number_Valid_Cells Time 
Date              
1/1/2015     91    92  18:55 
1/2/2015     6    6  18:00 
1/2/2015     13    13  16:40#I change here 
1/3/2015     106    106  18:45 
1/5/2015     68    68  18:30 
1/6/2015     111    117  19:15 
1/7/2015     89    97  18:20 
1/8/2015     86    96  19:00 
1/10/2015     9    16  18:50 
+0

我想我應該澄清一點。我想要的時間戳是具有較大有效單元格的時間戳,並且可能是18:00的時間戳。所以它並不總是最後一個。也可能有同一天3次或更多。 – CRogers

+0

這羣人每天都在嗎? – CRogers

+0

@CRogers group by your'index' – Wen

1

可以使用GROUPBY總和前兩列,如果你的Number_Valid_Cells值進行排序,然後

ndf = df.reset_index().groupby('Date').sum() 
ndf['Time'] = df.reset_index().drop_duplicates(subset='Date',keep='last').set_index('Date')['Time'] 
 
       Number_QA_VeryGood Number_Valid_Cells Time 
Date              
2015-01-01     91     92 18:55 
2015-01-02     19     19 19:40 
2015-01-03     106     106 18:45 
2015-01-05     68     68 18:30 
2015-01-06     111     117 19:15 
2015-01-07     89     97 18:20 
2015-01-08     86     96 19:00 
2015-01-10     9     16 18:50 

+1

節日快樂〜:)+ 1 – Wen

+0

它並不總是最後一次印章。我需要對應於每個日期的大數有效單元格的行中的時間戳。我每天可以有兩個以上的時間戳。我也有總結部分工作,我真的只是堅持如何獲得正確的時間戳。感謝您的幫助, – CRogers