快速条件前向填充pandas DataFrame

时间:2016-11-14 01:50:48

标签: python python-3.x pandas dataframe

我正在寻找一种在DataFrame的每一列上有效执行特定操作的方法。在每一列中,如果一个条目后跟一个由相同数字组成的序列,该序列低于该条目,再次输入该条目,并且该序列不长于 k ,则填写顺序由"包围"条目。

例如,假设 k = 2 。然后,以下DataFrame

   0  1  2  3  4
0  6  6  6  6  6
1  7  7  5  6  6
2  7  7  5  5  5
3  6  7  5  5  5
4  5  6  6  6  9
5  9  9  9  9  6

应转换为:

   0  1  2  3  4
0  6  6  6  6  6
1  7  7  5  6  6
2  7  7  5  6  5
3  6  7  5  6  5
4  5  6  6  6  9
5  9  9  9  9  6

请注意,只填充了第3列中5的序列。在列0和1中,7的序列保持不变,因为 7> 6 。在第2列中, 5< 6 但序列的长度为3,高于 k = 2 。第4列保持不变,因为5的序列之后是一个与其前面的条目(6)不同的条目(9)。

填写条件摘要:

  1. 序列由相同的数字组成,并且该数字低于序列开始前的条目。
  2. 序列的长度小于或等于k。
  3. 序列之后的条目与序列之前的条目相同。
  4. 我可以在一个循环中完成它,但由于我的DataFrame很大,所以需要很长时间。有人可以提出一种有效的(速度)方法吗?

0 个答案:

没有答案