如何在python数据框中的列中获取值的第一次出现

时间:2018-06-28 17:51:34

标签: python pandas dataframe

我有一个python pandas数据框,如下:

     name     date         value
0    XYZ    01-01-2018    No Value
1    XYZ    02-01-2018    No Value
2    XYZ    03-01-2018     A
3    XYZ    04-01-2018     A
4    XYZ    05-01-2018     B
5    XYZ    06-01-2018     B
6    XYZ    07-01-2018     A

我只想获取value列中数据第一次出现A或B的行,并跳过连续的重复值。

例如,在这种情况下,A第一次出现在索引2,然后B出现在索引4,再次A出现在索引6。简而言之,我想获取索引为2,4和6的行。 / p>

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:3)

似乎您可能需要pd.Series.notnull + pd.Series.shift

res = df[df['value'].notnull() & (df['value'] != df['value'].shift())]

print(res)

  name        date value
2  XYZ  03-01-2018     A
4  XYZ  05-01-2018     B
6  XYZ  07-01-2018     A

答案 1 :(得分:2)

isin shift

df.loc[(df.value.isin(['A', 'B'])) & (df.value != df.value.shift())]

  name        date value
2  XYZ  03-01-2018     A
4  XYZ  05-01-2018     B
6  XYZ  07-01-2018     A

答案 2 :(得分:1)

可能不是最佳解决方案,但这应该可行:

import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3, 4, 5], "b": [0, 2, 0, 1, 2]})
df.groupby("b").first()