2017-09-27 31 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非常有用。 –