如果满足条件,如何删除熊猫数据框中的特定行

时间:2020-06-06 18:08:04

标签: python pandas dataframe

我有一个熊猫数据框,其中有几千行,只有一列。内容的结构如下:

  |   0
0 | Score 1
1 | Date 1
2 | Group 1
3 | Score 1
4 | Score 2
5 | Date 2
6 | Group 2
7 | Score 2
8 | Score 3
9 | Date 3
10| Group 3
11| ...
12| ...
13| Score (n-1)
14| Score n
15| Date n
16| Group n

如果行(i)中的“得分”和行(i + 1)中的“得分”,我需要删除所有索引为i的行。关于如何实现这一目标的任何建议?

预期输出如下:

  |   0
0 | Score 1
1 | Date 1
2 | Group 1
3 | Score 2
4 | Date 2
5 | Group 2
6 | Score 3
7 | Date 3
8 | Group 3
9 | ...
10| ...
11| Score n
12| Date n
13| Group n

1 个答案:

答案 0 :(得分:1)

如果行(i)中的“得分”和行(i + 1)中的“得分”,我需要删除所有索引为i的行。关于如何实现这一目标的任何建议?

给予

>>> df
         0
0  Score 1
1   Date 1
2  Group 1
3  Score 1
4  Score 2
5   Date 2
6  Group 2
7  Score 2
8  Score 3
9   Date 3

您可以使用

>>> mask = df.assign(shift=df[0].shift(-1)).apply(lambda s: s.str.contains('Score')).all(1)
>>> df[~mask].reset_index(drop=True)
         0
0  Score 1
1   Date 1
2  Group 1
3  Score 2
4   Date 2
5  Group 2
6  Score 3
7   Date 3

尽管我是您,但我还是会先使用修正数据的格式,正如评论员已经指出的那样。