Pandas學習筆記系列:html
原文:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-3-pd-assign/ 本文有刪改python
咱們能夠根據本身的需求, 用 pandas
進行更改數據裏面的值, 或者加上一些空的,或者有數值的列.git
首先創建了一個 6X4 的矩陣數據。github
dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D']) """ A B C D 2013-01-01 0 1 2 3 2013-01-02 4 5 6 7 2013-01-03 8 9 10 11 2013-01-04 12 13 14 15 2013-01-05 16 17 18 19 2013-01-06 20 21 22 23 """
咱們能夠利用索引或者標籤肯定須要修改值的位置。學習
df.iloc[2,2] = 1111 df.loc['20130101','B'] = 2222 """ A B C D 2013-01-01 0 2222 2 3 2013-01-02 4 5 6 7 2013-01-03 8 9 1111 11 2013-01-04 12 13 14 15 2013-01-05 16 17 18 19 2013-01-06 20 21 22 23 """
若是如今的判斷條件是這樣, 咱們想要更改B中的數, 而更改的位置是取決於 A 的. 對於A大於4的位置. 更改B在相應位置上的數爲0.spa
df.B[df.A>4] = 0 """ A B C D 2013-01-01 0 2222 2 3 2013-01-02 4 5 6 7 2013-01-03 8 0 1111 11 2013-01-04 12 0 14 15 2013-01-05 16 0 18 19 2013-01-06 20 0 22 23 """
若是對整列作批處理, 加上一列 ‘F’, 並將 F 列全改成 NaN, 以下:code
df['F'] = np.nan """ A B C D F 2013-01-01 0 2222 2 3 NaN 2013-01-02 4 5 6 7 NaN 2013-01-03 8 0 1111 11 NaN 2013-01-04 12 0 14 15 NaN 2013-01-05 16 0 18 19 NaN 2013-01-06 20 0 22 23 NaN """
用上面的方法也能夠加上 Series 序列(可是長度必須對齊)。htm
df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130101',periods=6)) """ A B C D F E 2013-01-01 0 2222 2 3 NaN 1 2013-01-02 4 5 6 7 NaN 2 2013-01-03 8 0 1111 11 NaN 3 2013-01-04 12 0 14 15 NaN 4 2013-01-05 16 0 18 19 NaN 5 2013-01-06 20 0 22 23 NaN 6 """
注意添加新的一列數據時必定要記得指明index
,由於你不指明index
的話,即便新的列元素數量和原來DataFrame同樣,那麼最終仍是會以NaN
的格式初始化,看下面例子:blog
df['E'] = pd.Series([1,2,3,4,5,6],) print(df) """ A B C D E 2013-01-01 0 1 2 3 NaN 2013-01-02 4 5 6 7 NaN 2013-01-03 8 9 10 11 NaN 2013-01-04 12 13 14 15 NaN 2013-01-05 16 17 18 19 NaN 2013-01-06 20 21 22 23 NaN """
固然若是咱們指定的index
和原來的不同也不要緊,由於pandas會自動把沒有對應的部分填充爲NaN
,例子以下:索引
df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130103',periods=6)) print(df) """ A B C D E 2013-01-01 0 1 2 3 NaN 2013-01-02 4 5 6 7 NaN 2013-01-03 8 9 10 11 1.0 2013-01-04 12 13 14 15 2.0 2013-01-05 16 17 18 19 3.0 2013-01-06 20 21 22 23 4.0 """