D3V*_*LPR 2 dataframe python-3.x pandas
我正在使用熊猫和蟒蛇,我有一个任务,我需要检查
GDP diff sign
Quarter
1999q4 12323.3 NaN None
2000q1 12359.1 35.8 None
2000q2 12592.5 233.4 None
2000q3 12607.7 15.2 None
2000q4 12679.3 71.6 None
Run Code Online (Sandbox Code Playgroud)
让上面的数据框是 df ,当我这样做时
if df.iloc[2]['diff'] > 0:
df.iloc[2]['sign'] = "Positive"
Run Code Online (Sandbox Code Playgroud)
该值未在数据帧上更新。有什么地方我做错了。它是一个直接赋值,就像我们如何做 df['something'] = 'some value' 并且通过这样做,它将比值插入到该列下的 df 中。但是当我执行上述需要确定正面或负面的操作时,它仍然显示为无
df.iloc[2]['sign']
Run Code Online (Sandbox Code Playgroud)
我尝试将 apply 与 lambdas 一起使用,但无法得到我想要的。
一些帮助将不胜感激谢谢。
您可以先使用 doublenumpy.where来过滤NaN值isnull,然后再按条件df['diff'] > 0:
df.sign = np.where(df['diff'].isnull(), np.nan,
np.where(df['diff'] > 0, 'Positive', 'Negative'))
print (df)
Quarter GDP diff sign
0 1999q4 12323.3 NaN NaN
1 2000q1 12359.1 35.8 Positive
2 2000q2 12592.5 233.4 Positive
3 2000q3 12607.7 15.2 Positive
4 2000q4 12679.3 -71.6 Negative
Run Code Online (Sandbox Code Playgroud)
因为如果只对值使用df['diff'] > 0get :NegativeNaN
df.sign = np.where(df['diff'] > 0, 'Positive', 'Negative')
print (df)
Quarter GDP diff sign
0 1999q4 12323.3 NaN Negative
1 2000q1 12359.1 35.8 Positive
2 2000q2 12592.5 233.4 Positive
3 2000q3 12607.7 15.2 Positive
4 2000q4 12679.3 -71.6 Negative
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |