我遇到了一个小问题,解决方案当然很简单,但是我找不到解决方法。
假设我有以下熊猫数据框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
的首次出现),但不是提取该值。
我怎么能简单地做到这一点?
答案 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)]