在Pandas中,append()方法用於將一個或多個DataFrame或Series添加到DataFrame中。append()方法也可以用於合並操作,本文介紹append()方法的用法。
一append()實現合並
append(other): 將一個或多個DataFrame添加到調用append()的DataFrame中,實現合並的功能,other參數傳入被合並的DataFrame,如果需要添加多個DataFrame,則用列表或元組的方式傳入。
append()方法通過添加的方式實現了合並的功能,這種合並功能是按行(縱向)進行合並的,合並結果的行數是所有DataFrame的行數之和。
二填充不存在的列
如果調用append()的DataFrame和傳入append()的DataFrame中有不同的列,則添加後會在不存在的列填充空值,這樣即使兩個DataFrame有不同的列也不影響添加操作。
三添加多個DataFrame
添加多個DataFrame時,用列表或元組的方式傳入多個DataFrame即可,添加的原理不變。如果需要,可以將批量的DataFrame合並成一個DataFrame。
四重設行索引
ignore_index: ignore_index參數默認為False,結果的行索引保持原DataFrame中的行索引,即使存在相同的行索引也不受影響。將ignore_index修改為True,則結果的行索引被重設為從0開始的整數索引。
verify_integrity: verify_integrity參數默認為False,添加的DataFrame中有相同的行索引時,可以保留原結果。將verify_integrity修改為True,如果添加的DataFrame中有相同的行索引,會拋出ValueError。設置verify_integrity參數為True,是為了避免結果中的行索引重復,但很可能會導致添加失敗,所以需要先觀察原始數據是否適合。
ignore_index和verify_integrity同時使用時,ignore_index先生效,所以兩個參數同時使用時,不會拋出異常。
五添加Series
append()方法也可以在DataFrame中添加Series。添加Series時,要將ignore_index參數設置為True或給Series設置name參數,否則會拋出TypeError,原因是Series沒有列名。
設置ignore_index參數為True會重設結果的行索引,這樣添加的Series作為結果中的一行,會自動生成行索引。
指定Series的name參數,這樣Series將以name參數作為行索引添加到DataFrame中。即使指定的name值與DataFrame中的行索引重復,也可以添加成功(verify_integrity不為True)。
六總結
截止到本文,本系列介紹了可以用於合並操作的五種方法:concat()、merge()、join()、combine()、append(),總結一下它們的用法差異。
concat(): 連接操作,可以連接多個DataFrame,可以設置按行合並還是按列合並。有inner、outer、left、right四種不同的連接方式。可以對結果的索引進行設置,尤其是對多重行索引的處理提供了多種方式。
merge(): 合並操作,只能用於合並兩個DataFrame,且都是按列進行合並,只有當兩個DataFrame的列名完全一樣時才是按行合並的效果。合並時根據指定的連接列(或行索引)和連接方式來匹配兩個DataFrame的行。可以在結果中設置相同列名的後綴和顯示連接列是否在兩個DataFrame中都存在。
join(): 加入操作,可以在一個DataFrame中加入多個DataFrame,結果都是按列進行合並的。合並時根據指定的連接列(或行索引)和連接方式來匹配兩個DataFrame的行,也可以設置相同列名的後綴,所以有時候join()和merge()可以相互轉換。
combine(): 聯合操作,用於兩個DataFrame,按列的方式進行聯合。聯合操作是將一個DataFrame中的部分數據用另一個DataFrame中的數據替換或補充,通過一個函數來定義聯合時取數據的規則。在聯合過程中還可以對空值進行填充。
append(): 添加操作,可以將多個DataFrame添加到一個DataFrame中,按行的方式進行添加。添加操作只是將多個DataFrame按行拼接到一起,可以重設行索引。