[英]Finding first repeated consecutive entries in pandas dataframe
我有一个包含Stock和DueDate两列的数据框,我需要根据 stock 列从重复的连续条目中选择第一行。
df:
我期待如下输出,
预期输出:
我的方法
我尝试使用的方法是首先通过创建一个新列repeat_yes列出所有基于股票列重复的行,然后仅当任何行重复两次以上时才对第一行进行子集化。
我使用下面的代码行创建了新列“repeated_yes”,
ss = df.Stock.ne(df.Stock.shift())
df['repeated_yes'] = ss.groupby(ss.cumsum()).cumcount() + 1
所以新更新的数据框看起来像这样,
df_new
但我坚持只对第3行和第8行进行子集化以获得结果。 如果有任何其他有效的方法会有所帮助。
编辑:忘记包含实际的完整问题,如果数据帧df的最后一行下方还有任何其他行,则不应显示任何输出。
将Series.duplicated
创建的另一个掩码与keep=False
by &
用于按位AND
并在boolean indexing
过滤:
ss = df.Stock.ne(df.Stock.shift())
ss1 = ss.cumsum().duplicated(keep=False)
df = df[ss & ss1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.