繁体   English   中英

如何删除索引在 dataframe 中的另一个索引值之后的行?

[英]how to drop rows where the index succeed another index value in a dataframe?

例如,这个切片我需要删除连续的切片,并保留最后一个。 例如,115 成功 114,所以我应该放弃 114。

108    3
114    3
115    4
123    3
124    4
125    5

所需的 dataframe 将是:

108    3
115    4
125    5

通过Series.diff获取差异,并过滤 no -1行,这意味着删除了第一个连续的重复项:

注意:因为index.diff没有实现,所以使用Index.to_seriesindex转换为Series

df1 = df[df.index.to_series().diff(-1).ne(-1)]
print (df1)
     a
108  3
115  4
125  5

如果需要按列中的值过滤,例如a

df2 = df.drop_duplicates('a')
print (df2)
     a
108  3
115  4
125  5

您的问题说的是最后但预期的 output首先是供参考。

df = pd.read_csv(io.StringIO("""108    3
114    3
115    4
123    3
124    4
125    5"""),sep="\s+", header=None).set_index(0)

print(df.reset_index().groupby(1, as_index=False).first().set_index(0).to_markdown())

0 1
108 3
115 4
125 5
print(df.reset_index().groupby(1, as_index=False).last().set_index(0).to_markdown())


0 1
123 3
124 4
125 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM