學習pandas兩天了,關於這個增長行的問題一直困擾着我,測試了幾個代碼,終於搞通了一點(昨天是由於代碼敲錯了。。。)函數
直接上代碼:學習
1 dates = pd.date_range('20170101',periods=6) 2 df1 = pd.DataFrame(np.arange(24).reshape((6,4)),index = dates,columns=['A','B','C','D'])
建立了一個名爲df1的DataFrame,其中數據爲24爲排列數,關鍵是index的取值,我這裏用的pandas自帶的日期序列函數生成的dates測試
生成的df1如圖:spa
這裏能夠看到index的名稱爲date_time格式的code
須要加入新的一行時,我採用了loc函數:blog
df1.loc[pd.to_datetime('20170108'),['A','B','C','D','E']] = [1,2,3,4,5]
按照以前的index的格式添加,顯然增長的新行和以前行的形式是相同的:圖片
(這裏圖片多添加了一行,不牽扯)字符串
可是若是,添加的index和以前的數據類型不一樣時,會報錯麼?pandas
試一試:io
df1.loc['20180108',['D','E']]=[1,2]
這裏我將一個字符串’20180108‘,添加到新行的index,本覺得會報錯,結果:
添加成功了,不過表格的格式也發生更改了,date_time本來隱藏的時間00:00:00顯示出來。接着我添加相同名稱的int32位變量試試:
df1.loc[20180108,['E','C']] = [1,3]
一樣添加成功,神奇的一幕發生了:
出現了兩個徹底相同的index:20180108
這是爲何呢?原來是由於,上面那行的20180108的數據類型是str,而下面那行的20180108數據類型是int32,系統判斷是兩個徹底不一樣的數據,因此會出現兩個徹底相同的index在表格中
接着,再添加一個date_time格式的’20180108‘吧:
df1.loc[pd.to_datetime('20180108'),['A','B']] = [3,4]
結果不出所料:
成功添加。
至此,pandas的添加行操做原理基本搞明白了,keep learning。