在熊猫中显示与条件不同的行

时间:2018-05-07 13:57:18

标签: python pandas dataframe lambda

想象一下,我们有一个具有这种结构的Pandas Dataframe:

Date                Value    PercentageDifference
2018-04-08 13:40:00 0.001   0.000000
2018-04-08 13:41:00 5.000   4999.000000
2018-04-08 13:42:00 16.670  2.334000
2018-04-08 13:43:00 18.670  0.119976

如何只显示具有特定条件的不同数据帧行,例如,如果值= 0.001显示此行,而下一行显示该行:

Date                Value   PercentageDifference
2018-04-08 13:40:00 0.001   0.000000
2018-04-08 13:41:00 5.000   4999.000000

是否只有lambda解决方案,或者使用Pandas功能可以更轻松地完成它?

3 个答案:

答案 0 :(得分:2)

尝试使用|shift

df[(df.Value==0.001)|(df.Value==0.001).shift()]
Out[414]: 
                 Date  Value  PercentageDifference
0  2018-04-0813:40:00  0.001                   0.0
1   2018-04-083:41:00  5.000                4999.0

答案 1 :(得分:1)

假设您的Dataframe名为df。

idx = df['Value'] == 0.001

包含值为== 0.001

的行
idx_os = np.roll(idx, 1)

包含下一行(是的也是第一行,如果最后一行的值为== 0.001 - 请考虑一下,如果你想要或不这样做。

然后你的行包含

df[idx | idx_os]

答案 2 :(得分:1)

您可以使用np.where()获取Value=0.001行的位置,然后查询此行和下一行。

idx = np.where([df['Value']==0.001][0])[0][0]
df.iloc[idx:idx+2]

输出:

   Date       Value   Percentage  Difference
2018-04-08  13:40:00    0.001     0.0
2018-04-08  13:41:00    5.000     4999.0