2015-12-19 119 views
3

我在Pandas中有一個Series對象,我想從Series的所有值中減去一個等於Series的第一個值。熊貓,如何從系列中的所有值中減去第一行值?

例如:

此:

2015-10-01: 5000 
2015-10-02: 5005 
2015-10-03: 5012 

變成這樣:

2015-10-01: 0 
2015-10-02: 5 
2015-10-03: 12 

這可能與本地熊貓方法?或者我應該循環所有值並減去?

+3

只是's - s.iloc [0]' – EdChum

回答

5

可以使用iloc[0]訪問的第一行的值,然後就從系列的其餘減去:

In [5]: 
import io 
import pandas as pd 
t="""2015-10-01 5000 
2015-10-02 5005 
2015-10-03 5012""" 
s = pd.read_csv(io.StringIO(t), index_col=[0], parse_dates=[0], header=None, delim_whitespace=True, squeeze=True) 
s 

Out[5]: 
0 
2015-10-01 5000 
2015-10-02 5005 
2015-10-03 5012 
Name: 1, dtype: int64 

In [6]:  
s - s.iloc[0] 

Out[6]: 
0 
2015-10-01  0 
2015-10-02  5 
2015-10-03 12 
Name: 1, dtype: int64 

它可以使用head(1)但你需要索引數組,以獲得標量值否則,你得到NaN的第二排起,由於指數比對:

01:

In [9]: 
s - s.head(1)[0] 

Out[9]: 
0 
2015-10-01  0 
2015-10-02  5 
2015-10-03 12 
Name: 1, dtype: int64 

與比較

相關問題