關於pandas增加行時,索引名稱的一些問題

2022-09-19 01:15:10 字數 1664 閱讀 9357

學習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如圖:

這裡可以看到index的名稱為date_time格式的

需要加入新的一行時,我採用了loc函式:

df1.loc[pd.to_datetime('

20170108

'),['

a','

b','

c','

d','

e']] = [1,2,3,4,5]

按照之前的index的格式新增,顯然增加的新行和之前行的形式是相同的:

(這裡多新增了一行,不牽扯)

但是如果,新增的index和之前的資料型別不同時,會報錯麼?

試一試:

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。

關於pandas的一些使用

該函式只對dataframe或series型別有效,用於去除重複值。引數有三個 舉個例子 dataframe pd.read excel data.xlsx dataframe2 pd.read excel data.xlsx dataframe.drop duplicates subset non...

關於pandas的一些筆記

print df.loc 1,row labels 取行索引為1,列索引為row labels的資料 8 t1 df.loc 1,2 取第一行和第二行,等價於df.loc 1,2 9 t2 df.loc 1,2 row labels count animalname 取塊10 t3 df.iloc ...

關於jquery索引的一些困惑

今日同事很正式的向我提出了兩個關於jquery的問題,我也很正式得做了回答,順便把原始碼貼到這裡希望對朋友們有所幫助 問題一 為什麼現在彈出來每個button 在ul li中的 的索引值都是零,為什麼不是從0 9排列的 答 第乙個匹配元素的 index,相對於同胞元素,獲得第乙個匹配元素相對於其同胞...