【发布时间】:2019-07-21 05:19:30
【问题描述】:
我有一个愚蠢的问题。我的df 看起来像这样:
FID_2 STA_SID s2 s1 Qh_STA Qh_FID2 \
14 222143.00 26040713.00 0.00 0.00 8.00 17.00
15 222143.00 26040713.00 0.00 8.00 6.00 17.00
13 222143.00 26040713.00 6.00 8.00 3.00 17.00
17 NaN 26033594.00 29445425.00 1707.00 5.00 nan
我定义了以下函数和命令:
A = 0.8
def seekDO(row):
if (row['Qh_STA'])/row['Qh_FID2'] < A :
return 1
if ((row['Qh_STA'] + row['s1'])/row['Qh_FID2'] < A) :
return 1
if ((row['Qh_STA'] + row['s1'] + row['s2']) / row['Qh_FID2'] < A) :
return 1
return 0
df['DO'] = df.apply (lambda row: seekDO(row),axis=1)
问题是 DO 我明白了
DO
14 1
15 1
13 1
17 0
而不是
DO
14 1
15 0
13 0
17 0
你能看出我哪里弄错了吗?
【问题讨论】:
-
与错误无关但
df.apply (lambda row: seekDO(row),axis=1)与df.apply (seekDO,axis=1)相同 -
如果测试第一个条件得到值
<A和print ((row['Qh_STA'])/row['Qh_FID2'])-0.47058823529411764, 0.35294117647058826, 0.17647058823529413 -
您的所有案例都属于第一个
if声明
标签: python pandas if-statement conditional