Python?pandas?DataFrame數(shù)據(jù)拼接方法
前言
在pandas模塊中,通常我們都需要對(duì)類型為DataFrame的數(shù)據(jù)進(jìn)行操作,其中最為常見的操作便是拼接了。比如我們將兩個(gè)Excel表格中的數(shù)據(jù)讀入,隨后拼接完成后保存進(jìn)一個(gè)新的Excel表格文件中。之前查找了相關(guān)的博客, 發(fā)現(xiàn)網(wǎng)絡(luò)上魚龍混雜。有些代碼完全無法執(zhí)行,為了提高效率,這里做一個(gè)詳細(xì)地記錄。
DataFrame數(shù)據(jù)拼接方法一:使用.append()方法。
# -*- coding:utf-8 -*- import pandas as pd df1 = pd.DataFrame([[1, 2], [3, 4]]) df2 = pd.DataFrame([[5, 6], [7, 8]]) df = df1.append(df2) print("df1的值為:") print(df1) print("df2的值為:") print(df2) print("df的值為:") print(df) """ 運(yùn)行結(jié)果: df1的值為: 0 1 0 1 2 1 3 4 df2的值為: 0 1 0 5 6 1 7 8 df的值為: 0 1 0 1 2 1 3 4 0 5 6 1 7 8 """
我們可以看到,首先我們使用了類似于list列表的操作方式,使用.append()方法對(duì)df1與df2數(shù)據(jù)進(jìn)行了操作,但是需要注意的是,不同于對(duì)列表對(duì)象的操作,這里的df1仍舊為原來的df1所擁有的內(nèi)容,而我們賦值的對(duì)象df才是保存了二者拼接以后的結(jié)果。 所以記得一定要單獨(dú)執(zhí)行賦值才可以得到正確的結(jié)果?。?!其次我們看到結(jié)果其實(shí)是有些問題的,df結(jié)果中的縱向索引值為0,1,0,1,仍舊保留了我們拼接前各自的索引值,這是不被我們需要的,因此我們需要設(shè)置 ignore_index=True來對(duì)索引值進(jìn)行重新排列。代碼如下:
# -*- coding:utf-8 -*- import pandas as pd df1 = pd.DataFrame([[1, 2], [3, 4]]) df2 = pd.DataFrame([[5, 6], [7, 8]]) df = df1.append(df2, ignore_index=True) print("df1的值為:") print(df1) print("df2的值為:") print(df2) print("df的值為:") print(df) """ 運(yùn)行結(jié)果: df1的值為: 0 1 0 1 2 1 3 4 df2的值為: 0 1 0 5 6 1 7 8 df的值為: 0 1 0 1 2 1 3 4 2 5 6 3 7 8 """
我們可以看到,此時(shí)的縱向索引值變正常了。
注意: df1 = pd.DataFrame([[1, 2], [3, 4]])
創(chuàng)建DataFrame類型的數(shù)據(jù)時(shí)要使用雙層中括號(hào),單層中括號(hào)會(huì)導(dǎo)致數(shù)據(jù)縱向排列。
DataFrame數(shù)據(jù)拼接方法二:使用.concat()方法。
# -*- coding:utf-8 -*- import pandas as pd df1 = pd.DataFrame([[1, 2], [3, 4]]) df2 = pd.DataFrame([[5, 6], [7, 8]]) df = pd.concat([df1, df2], ignore_index=True) print("df1的值為:") print(df1) print("df2的值為:") print(df2) print("df的值為:") print(df) """ 運(yùn)行結(jié)果: df1的值為: 0 1 0 1 2 1 3 4 df2的值為: 0 1 0 5 6 1 7 8 df的值為: 0 1 0 1 2 1 3 4 2 5 6 3 7 8 """
我們可以看到成功實(shí)現(xiàn)了拼接。
但是這樣并不美觀,我們發(fā)現(xiàn),我們的縱向index還是用0,1在表示,那么我們可不可以自定義縱向index呢?答案是可以的,請(qǐng)看如下代碼:
import pandas as pd df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["column1", "column2"]) df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["column1", "column2"]) df = pd.concat([df1, df2], ignore_index=True) print("df1的值為:") print(df1) print("df2的值為:") print(df2) print("df的值為:") print(df) """ 運(yùn)行結(jié)果: df1的值為: column1 column2 0 1 2 1 3 4 df2的值為: column1 column2 0 5 6 1 7 8 df的值為: column1 column2 0 1 2 1 3 4 2 5 6 3 7 8 """
至此,DataFrame的拼接問題暫時(shí)告一段落,當(dāng)然還存在其他方法,以后有機(jī)會(huì)了再補(bǔ)充,這兩種方法均為比較直觀和簡(jiǎn)潔的方法。推薦使用。此外, pd.concat()函數(shù)也適用于多個(gè)DataFrame的拼接, 只要將第一個(gè)參數(shù)變?yōu)橐粋€(gè)列表,涵蓋所有的DataFrame名稱即可,如[df1, df2, df3]。
補(bǔ)充:Python同時(shí)合并多個(gè)DataFrame
pandas的merge函數(shù)只能同時(shí)合并三個(gè)dataframe,如果涉及到合并多個(gè)dataframe就比較麻煩
這種情況下我們可以創(chuàng)建一個(gè)我們需要合并的列表,然后將他們一次性合并在一起
# merge any number of dataframes from functools import reduce df_groups = [df2, group1, group2, group3, group4, group5, group6, group7, group8] df_merged = reduce(lambda left, right: pd.merge(left, right, on=['title']), df_groups) df_merged.head()
總結(jié)
到此這篇關(guān)于Python pandas DataFrame數(shù)據(jù)拼接的文章就介紹到這了,更多相關(guān)pandas DataFrame拼接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)Matlab中共軛、轉(zhuǎn)置和共軛裝置的區(qū)別說明
這篇文章主要介紹了對(duì)Matlab中共軛、轉(zhuǎn)置和共軛裝置的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05使用python+Pyqt5實(shí)現(xiàn)串口調(diào)試助手
這篇文章主要介紹了使用python+Pyqt5實(shí)現(xiàn)串口調(diào)試助手,串口通訊程序首先要對(duì)串口進(jìn)行設(shè)置,如波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等,需要的朋友可以參考下2022-04-04tensorflow 實(shí)現(xiàn)自定義layer并添加到計(jì)算圖中
今天小編就為大家分享一篇tensorflow 實(shí)現(xiàn)自定義layer并添加到計(jì)算圖中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02python通過socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解
這篇文章主要介紹了python通過socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11如何使用PyTorch實(shí)現(xiàn)自由的數(shù)據(jù)讀取
這篇文章主要給大家介紹了關(guān)于如何使用PyTorch實(shí)現(xiàn)自由的數(shù)據(jù)讀取的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法
本文介紹基于Python語(yǔ)言,將一個(gè)Excel表格文件中的數(shù)據(jù)導(dǎo)入到Python中,并將其通過字典格式來存儲(chǔ)的方法,感興趣的朋友一起看看吧2023-01-01pyqt QPlainTextEdit 中捕獲回車的示例代碼
在PyQt的QPlainTextEdit控件中,可以通過重寫keyPressEvent()函數(shù)來捕獲鍵盤事件,這篇文章主要介紹了pyqt QPlainTextEdit 中捕獲回車,需要的朋友可以參考下2024-03-03分享5個(gè)短小精悍的Python趣味腳本,適合小白上手!
這篇文章主要給大家分享介紹了5個(gè)短小精悍的Python趣味腳本,非常適合小白上手,分別包含圖片尺寸縮小、pdf轉(zhuǎn)txt文檔、猜數(shù)字游戲、電池電量告警以及圖片添加水印等腳本,需要的朋友可以參考下2022-02-02