df1 = dataframe(np.arange(12).reshape(3,4),columns=list('abcd'))
df1out[74]:
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
df2 = dataframe(np.arange(20).reshape(4,5),columns=list('abcde'))
df2out[79]:
a b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
如果單純相加的話,空值會返回nan
df1+df2
out[80]:
a b c d e
0 0.0 2.0 4.0 6.0 nan
1 9.0 11.0 13.0 15.0 nan
2 18.0 20.0 22.0 24.0 nan
3 nan nan nan nan nan
所以需要使用df1的add方法,傳入df2以及乙個fill_value引數:
df1.add(df2,fill_value=0)
out[83]:
a b c d e
0 0.0 2.0 4.0 6.0 4.0
1 9.0 11.0 13.0 15.0 9.0
2 18.0 20.0 22.0 24.0 14.0
3 15.0 16.0 17.0 18.0 19.0
df1.add(df2,fill_value=10)
out[84]:
a b c d e
0 0.0 2.0 4.0 6.0 14.0
1 9.0 11.0 13.0 15.0 19.0
2 18.0 20.0 22.0 24.0 24.0
3 25.0 26.0 27.0 28.0 29.0
方法
說明add
用於加法(+)的方法
sub用於減法(-)的方法
div用於除法(/)的方法
mul用於乘法(*)的方法
series和dataframe之間的計算
df2
out[122]:
a b c d e
z 0 1 2 3 4
x 5 6 7 8 9
c 10 11 12 13 14
v 15 16 17 18 19
series1 = df2.ix[0]
__main__:1: deprecationwarning:
.ix is deprecated. please use
.loc for label based indexing or
.iloc for positional indexing
see the documentation here:
indexing.html#ix-indexer-is-deprecated
series1
out[136]:
a 0
b 1
c 2
d 3
e 4
name: (z,), dtype: int32df2-series1
df2-series1
out[137]:
a b c d e
z 0 0 0 0 0
x 5 5 5 5 5
c 10 10 10 10 10
v 15 15 15 15 15
如果不是一一對應的話,同樣會出現nan
如果希望行在列上廣播,必須用算術運算方法
series3=df2['d']
series3
out[141]:
z 3
x 8
c 13
v 18
name: d, dtype: int32
df2.sub(series3,axis=0)
out[145]:
a b c d e
z -3 -2 -1 0 1
x -3 -2 -1 0 1
c -3 -2 -1 0 1
v -3 -2 -1 0 1
pandas 的算術運算和資料對齊
pandas 還有乙個重要的功能,就是他可以對不同索引的物件進行算數運算。物件相加,如果存在不同的索引對,則結果的索引就是該索引對的並集。先來個例子 in 33 s1 series 7.3,2.5,3.4,1.5 index a c d e in 34 s2 series 2.1,3.6,1.5,4...
變數和算術運算之算術運算(二)
主要內容 1.算術運算的優先順序 2.算術宣告的缺陷 3.在算術表示式中混合整數和實數 4.型別強制轉換 5.邊緣效應 include using namespace std intmain 賦值語句中使用前增量和後增量運算子 k i 等價於k i,i h i等價於j j h j 再例如 i 2,j...
LinuxShell算術運算
bash shell 的算術運算有四種方式 1 使用 expr 外部程式 加法 r expr 4 5 echo r 注意 4 5 這三者之間要有空白 r expr 4 5 錯誤 乘法 r expr 4 5 2 使用 r 4 5 echo r 3 使用 r 4 5 echo r 乘法r expr 4 ...