2017-09-27 3 views
0

パンダのデータフレームを開始時刻と終了時刻の間でタイムスタンプにフィルタリングし、それらの条件が満たされたときに指定された列の行に値を配置しようとしています。私は数百のアイテムが共存しており、スケーラブルな方法でそれをしようとしています。値を指定された行に配置し、次の条件に移動して項目をそれらの行に配置するという予想される動作を私に与えることはありません。代わりに、コードを実行するたびに、最後の値を上書きします。下記の擬似コードをご覧ください。これに対処する方法については、どんな考えやアイディアも参考になります。パンダでデータフレームに値をフィルタリングして配置する

注:私はapplyメソッドを使用することを考えましたが、何百万行ものデータをループするために必要な400×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にとって非常に有用ではありません。 –

関連する問題