根据列条件提取熊猫数据框中的特定值

时间:2020-06-13 14:28:45

标签: python-3.x pandas

我遇到了一个小问题,解决方案当然很简单,但是我找不到解决方法。 假设我有以下熊猫数据框df

import pandas as pd
X = [0.78, 0.82, 1.03, 1.06, 1.21]
Y = [0.0, 0.2521, 0.4905, 0.5003, 1.0]
df = pd.DataFrame({'X':X, 'Y':Y})
df
    X       Y
0   0.78    0.0000
1   0.82    0.2521
2   1.03    0.4905
3   1.06    0.5003
4   1.21    1.0000

我想恢复X超过Y的{​​{1}}的值;换句话说,我正在寻找一个程序来创建一个新变量0.5,例如:

val

我想象只有复杂的事物,风格:

print (val)
1.06

但这向我显示了我想要的df['Z'] = df.apply(lambda row: 0 if row.Y <= 0.5 else 1, axis = 1) df X Y Z 0 0.78 0.0000 0 1 0.82 0.2521 0 2 1.03 0.4905 0 3 1.06 0.5003 1 4 1.21 1.0000 1 值在哪里({{1}中的X的首次出现),但不是提取该值。

我怎么能简单地做到这一点?

1 个答案:

答案 0 :(得分:0)

我们可以使用idxmax进行检查,请注意它将需要一个小于0.5的值

df.loc[df.Y.gt(0.5).idxmax(),'Z']=1
df.Z.fillna(0,inplace=True)
df
      X       Y    Z
0  0.78  0.0000  0.0
1  0.82  0.2521  0.0
2  1.03  0.4905  0.0
3  1.06  0.5003  1.0
4  1.21  1.0000  0.0

如果要分离的数据框

df1=df.loc[df.Y.gt(0.5)]