0
我想確定爲什麼我的函數產生的最終值沒有被保存回到我指示熊貓建立的新列中。我已經確認if ... elif語句是正確的並且功能正確,並且我已經確認計算正在發生並生成正確的數據。我得到這個結果:數據沒有從嵌套函數傳回給熊貓
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 1.0
6 NaN
7 1.0
8 1.0
9 NaN
10 NaN
11 NaN
Name: Result, dtype: float64
但是期望獲得
0.036231884058
0.18115942029
0.925
0.9255
0.962820512821
1.0
0.368421052632
1.0
1.0
0.950125944584
1.0
0.950125944584
這裏是我的代碼:
import sys
import numpy as np
import pandas as pd
import scipy.stats
df = pd.DataFrame({
'Cr': [.1,.5,1,1.002,1.2,2,.79,3,3,4,400,4],
'De': [.1,.2,.36,.47,.5,.16,.006,.07,.107,.6,1.7,2.17]
});
def Fin_adj(row, field):
if field == 'Cr':
if row[field] <= .7:
Range_eval(row[field],0,.69,.0,.25)
elif row[field] <= .9:
Range_eval(row[field],.7,.89,.25,.5)
elif row[field] <= 1.1:
Range_eval(row[field],.9,1.10,.9,.95)
elif row[field] <= 1.5:
Range_eval(row[field],1.1,1.49,.95,1)
elif row[field] <= 3:
return 1
else:
Range_eval(row[field],3,data[field].max(),.95,1)
def Range_eval (val_in, Oldmin, Oldmax, Newmin, Newmax):
(((val_in - Oldmin) * (Newmax - Newmin))/(Oldmax - Oldmin)) + Newmin
df['Result'] = df.apply(Fin_adj, args=('Cr',), axis=1)
哇,謝謝你Alex。我覺得自己像一個白癡,我可以發誓,我嘗試了和不。我想我在測試Range_eval的時候必須回覆Range_eval。 – Vexiis
我們在這裏學習。你會記得'返回'確實足夠! ;-) –