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, 3.1], index=['
a', '
c', '
e', '
f', 'g'
])in [35]: s1
out[35]:
a 7.3c -2.5d 3.4e 1.5dtype: float64
in [36]: s2
out[36]:
a -2.1c 3.6e -1.5f 4.0g 3.1dtype: float64
in [37]: s1 +s2
out[37]:
a 5.2c 1.1d nan
e 0.0f nan
g nan
dtype: float64
in [38]: s3 = series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', '
c', '
e', '
f', 'g'
])in [39]: s1 + s2 +s3
out[39]:
a 3.1c 4.7d nan
e -1.5f nan
g nan
dtype: float64
也就是說nan值不會變
add 用於加法(+)方法sub 用於減法(-)方法
div 用於除法(/)方法
mul 用於乘法(*)方法
in [45]: df1 = dataframe(np.arange(9.).reshape((3,3)), columns=list('bcd'), index=['ohio', "texas", "colorado"])
in [46]: df2 = dataframe(np.arange(12.).reshape((4,3)), columns=list('bde'), index=["uhah", 'ohio', "texas", "oregon"])
in [47]: df1 +df2seriesout[47]:
b c d e
colorado nan nan nan nan
ohio 3.0 nan 6.0nan
oregon nan nan nan nan
texas 9.0 nan 12.0nan
uhah nan nan nan nan
那麼可以使用add方法,傳入df2乙個fill_valued引數
in [8]: df1.add(df2, fill_value=0)
out[8]:
b c d e
colorado 6.0 7.0 8.0nan
ohio 3.0 1.0 6.0 5.0oregon 9.0 nan 10.0 11.0texas 9.0 4.0 12.0 8.0uhah 0.0 nan 1.0 2.0
in [40]: arr = np.arange(12.).reshape((3, 4))dataframein [41]: arr
out[41]:
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]])
in [42]: arr[0]
out[42]: array([ 0., 1., 2., 3.])
in [43]: arr -arr[0]
out[43]:
array([[ 0., 0., 0., 0.],
[ 4., 4., 4., 4.],
[ 8., 8., 8., 8.]])
in [44]: frame = dataframe(np.arange(12.).reshape((4,3)), columns=list('注意:如果某個索引值在dataframe的列或series的索引中找不到, 則參與運算的兩個物件就會被重新索引以形成並集bde'), index=["
uhah
", '
ohio
', "
texas
", "
oregon"])
in [45]: series =frame.ix[0]
in [46]: frame -series
out[46]:
b d e
uhah 0.0 0.0 0.0ohio 3.0 3.0 3.0texas 6.0 6.0 6.0oregon 9.0 9.0 9.0
in [47]: series2 = series(range(3), index=['如果希望列在行上廣播,必須使用算術運算方法b', '
e', 'f'
])in [48]: frame +series2
out[48]:
b d e f
uhah 0.0 nan 3.0nan
ohio 3.0 nan 6.0nan
texas 6.0 nan 9.0nan
oregon 9.0 nan 12.0 nan
in [63]: frame.sub(series, axis=0)out[63]:
b d e
uhah -1.0 0.0 1.0ohio -1.0 0.0 1.0texas -1.0 0.0 1.0oregon -1.0 0.0 1.0
pandas算術運算
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 11df2 dataframe np.arange 20 reshape 4,5 colum...
算術運算和陣列
因為短是2個位元組,每個位址不同於2。很難得看到 和 用這樣的方式與指標運算子。然而,更常見的是看到 或 運算元被用來增加或減少乙個指標指向陣列中的下乙個或前乙個元素。指標的算術運算和陣列 如果是乙個指標,指向陣列的第乙個元素 元素0 的陣列,並新增1到指標已經返回下乙個物件,然後排列 1點必須到二...
指標那些事(算術運算 和陣列的關係)
指標算術運算有三種 指標加數字 指標減數字 指標減指標。指標加減數字 指標加減法需要調整指標,調整的權重是指標本身清楚乙個 號,在求sizeof 的長度。eg int main 指標減指標合法 指標加指標不合法 a,算出兩個指標間隔的位元組數,b,除以調整的權重,調整的權重是指標本身去掉乙個 號,再...