網(wǎng)站首頁 編程語言 正文
前言
在pandas模塊中,通常我們都需要對類型為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()方法對df1與df2數(shù)據(jù)進(jìn)行了操作,但是需要注意的是,不同于對列表對象的操作,這里的df1仍舊為原來的df1所擁有的內(nèi)容,而我們賦值的對象df才是保存了二者拼接以后的結(jié)果。 所以記得一定要單獨(dú)執(zhí)行賦值才可以得到正確的結(jié)果!!!其次我們看到結(jié)果其實(shí)是有些問題的,df結(jié)果中的縱向索引值為0,1,0,1,仍舊保留了我們拼接前各自的索引值,這是不被我們需要的,因此我們需要設(shè)置 ignore_index=True來對索引值進(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í)要使用雙層中括號,單層中括號會(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呢?答案是可以的,請看如下代碼:
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ǔ)充,這兩種方法均為比較直觀和簡潔的方法。推薦使用。此外, 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é)
原文鏈接:https://blog.csdn.net/u011699626/article/details/116406070
相關(guān)推薦
- 2022-03-26 C語言goto語句簡單使用詳解_C 語言
- 2022-09-14 Python定制類你不知道的魔術(shù)方法_python
- 2022-03-26 C++鏈表節(jié)點(diǎn)的添加和刪除介紹_C 語言
- 2022-09-01 前端工程Monorepo項(xiàng)目管理方式_其它綜合
- 2023-02-09 Python去除html標(biāo)簽的幾種方法總結(jié)_python
- 2023-07-02 Linux系統(tǒng)下如何實(shí)現(xiàn)修改主機(jī)名_Linux
- 2022-04-18 Docker安裝Nacos服務(wù)的實(shí)現(xiàn)_docker
- 2022-05-03 python實(shí)現(xiàn)跨進(jìn)程(跨py文件)通信示例_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支