2017-09-27 55 views
0

我試圖在開始和停止時間之間過濾熊貓數據幀,然後在滿足這些條件時將值放入指定列的行中。我有幾百個項目同時發生,因此我試圖以可擴展的方式進行。它沒有給我預期的行爲,將值放入指定的行,然後移動到下一個條件將項目放入這些行。相反,每次運行代碼時,它都會寫入最後一個值。請參閱下面的僞代碼。任何想法/想法對於如何處理這個問題都會有所幫助。使用熊貓過濾數據並將數值放入數據框

注意:我曾考慮過使用apply方法,但是,我有400 X 60種不同的值,我需要遍歷數百萬行數據,因此它看起來像過濾方法將是最有利的。

transactional_df[(transactional_df.timestamp > start1) & (transactional_df.timestamp < stop1)]['new_col'] = item1 
transactional_df[(transactional_df.timestamp > start2) & (transactional_df.timestamp < stop2)]['new_col'] = item2 

期望的結果:

transactional_df.col1...new_col 
Condition1 Met   item1 
Condition2 Met   item2 
+0

檢查零的回答https://stackoverflow.com/questions/46179362/fastest-way-to-merge-pandas-dataframe-on-ranges – Wen

回答

0
transactional_df['new_col']=[item1 if ((x>start1) & (x<stop1)) else item2 for x in transactional_df['timestamp']] 
+0

我已經使用了類似的代碼來處理大小爲數百萬的數據。所以希望這會有所幫助 – user3687197

+0

列表理解不會對數百萬的df非常有用。 –