2017-03-04 29 views
1

我想循環一個數據框,然後用複雜的計算中的利率填充幀的列。顯然,通過幀循環最好的方法是使用iterrows - 但是當我使用iterrows,我得到的整數值只:爲什麼不能iterrows做數學 - 而是返回整數值,其中這些應該是浮動

import pandas 
df = pandas.DataFrame({"A": [1,2,3,4,5]}) 
df['B']=0 
for index, row in df.iterrows(): 
    row['B']=row['A']*10.05 
df 

回報

A B 
0 1 10 
1 2 20 
2 3 30 
3 4 40 
4 5 50 

這是不正確的,因爲所有的值在A中乘以10.05。

下面的例子,給出了正確的結果:

df['B']=df['A']*10.05 

    A  B 
0 1 10.05 
1 2 20.10 
2 3 30.15 
3 4 40.20 
4 5 50.25 

至於說,這是不容易的使用此方法,因爲計算是複雜的。

我可以使用iterrows來產生正確的結果嗎?

回答

1

看來你需要loc指定標量值(atix):

for index, row in df.iterrows(): 
    df.loc[index, 'B'] =row['A']*10.05 
print (df) 
    A  B 
0 1 10.05 
1 2 20.10 
2 3 30.15 
3 4 40.20 
4 5 50.25 

但更好的是使用apply自定義功能:

df = pandas.DataFrame({"A": [1,2,3,4,5]}) 


def f(x): 
    x['B'] = x.A * 10.05 
    #another code 
    return x 

df = df.apply(f, axis=1) 
print (df) 
    A  B 
0 1.0 10.05 
1 2.0 20.10 
2 3.0 30.15 
3 4.0 40.20 
4 5.0 50.25 
+0

謝謝你,在循環的作品!我將添加一個跟進,看看應用函數,看看是否可以解決。 –

+0

在這裏看到我的後續,在這[鏈接](http://stackoverflow.com/questions/42601765/how-to-efficiently-fill-a-column-of-dataframe-with-values-calculated-from-other )。 –

+0

謝謝,但我現在要睡覺了。但有一個建議 - 爲你的新問題添加標籤熊貓。祝你好運! – jezrael

相關問題