国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Pandas 入門-2】增加,刪除與合并數(shù)據(jù) concat, merge

這篇具有很好參考價值的文章主要介紹了【Pandas 入門-2】增加,刪除與合并數(shù)據(jù) concat, merge。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.3 增加,刪除與合并數(shù)據(jù)

1.3.1 增加數(shù)據(jù)

在原數(shù)據(jù)末尾增加一列時,語法為 df[‘新列名'] = 某個值或某個元素個數(shù)與 DataFrame 列數(shù)相同的列表,例如:

df = pd.DataFrame({'姓名':['張三', '李四', '王五'], '統(tǒng)計學(xué)': [95, 100, 88], '高數(shù)': [82, 90, 88], '英語': [84, 89, 78]})
df['計算機(jī)'] = [92, 69, 75] # 增加一列計算機(jī)課程的成績
df
姓名 統(tǒng)計學(xué) 高數(shù) 英語 計算機(jī)
0 張三 95 82 84 92
1 趙四 100 90 89 69
2 王五 88 88 78 75

在原數(shù)據(jù)末尾增加一行數(shù)據(jù)時,比較簡單的方式是用 loc 函數(shù),df.loc[行索引] = 新行值

df.loc[3] = ['馬六', 65, 70, 69, 55]  # 在末尾增加一行數(shù)據(jù)
df
姓名 統(tǒng)計學(xué) 高數(shù) 英語 計算機(jī)
0 張三 95 82 84 92
1 趙四 100 90 89 69
2 王五 88 88 78 75
3 馬六 65 70 69 55

若要在指定位置插入列,則需要用到 insert 函數(shù)。

df.insert(1, '運(yùn)籌學(xué)', [61, 72, 84, 81]) # 在第 1 列后面插入新的一列
df
姓名 運(yùn)籌學(xué) 統(tǒng)計學(xué) 高數(shù) 英語 計算機(jī)
0 張三 61 95 82 84 92
1 趙四 72 100 90 89 69
2 王五 84 88 88 78 75
3 馬六 81 65 70 69 55
df.insert(3, 'Python', [81, 76, 74, 71]) # 在第 4 列后面插入新的一列
df
姓名 運(yùn)籌學(xué) 統(tǒng)計學(xué) Python 高數(shù) 英語 計算機(jī)
0 張三 61 95 81 82 84 92
1 趙四 72 100 76 90 89 69
2 王五 84 88 74 88 78 75
3 馬六 81 65 71 70 69 55

若要在指定位置插入行,目前 Pandas 還沒有專門的函數(shù),一般采用concat函數(shù)合并多個 DataFrame 的方式,增加多列或多行數(shù)據(jù)也可以使用 concat函數(shù)或merge函數(shù),具體參看后面的合并數(shù)據(jù)章節(jié)。

1.3.2 刪除數(shù)據(jù)

Pandas 可以利用drop函數(shù)刪除行數(shù)據(jù)或列數(shù)據(jù)。刪除一行時,參數(shù)為行標(biāo)簽名以及inplace = True。若沒有參數(shù)inplace = True,原始的 DataFrame 數(shù)據(jù)不變。

df.drop(3, inplace = True) # 刪除第 3 行
df
姓名 運(yùn)籌學(xué) 統(tǒng)計學(xué) Python 高數(shù) 英語 計算機(jī)
0 張三 61 95 81 82 84 92
1 趙四 72 100 76 90 89 69
2 王五 84 88 74 88 78 75

刪除一列時,多了一個參數(shù)axis = 1

df.drop('英語', inplace = True, axis = 1)
df
姓名 運(yùn)籌學(xué) 統(tǒng)計學(xué) Python 高數(shù) 計算機(jī)
0 張三 61 95 81 82 92
1 趙四 72 100 76 90 69
2 王五 84 88 74 88 75
df.drop(['運(yùn)籌學(xué)', '高數(shù)'], inplace = True, axis = 1) # 刪除兩行
df
姓名 統(tǒng)計學(xué) Python 計算機(jī)
0 張三 95 81 92
1 趙四 100 76 69
2 王五 88 74 75

1.3.3 合并數(shù)據(jù)

Pandas 中比較常用的兩個合并數(shù)據(jù)的方法是concatmerge。 當(dāng)兩個 DataFrame 數(shù)據(jù)表具有完全相同的列標(biāo)簽時,一般用concat,其他情況下多用merge

df1 = pd.DataFrame({'姓名': ['張三', '李四', '王五'], '統(tǒng)計學(xué)': [85, 68, 90], '高數(shù)': [82, 63, 88], '英語': [84, 90, 78]})
df1
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 張三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
df2 = pd.DataFrame({'姓名': ['馬大帥', '陳小虎'], '統(tǒng)計學(xué)': [83, 59], '高數(shù)': [92, 70], '英語': [94, 78]})
df2
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 馬大帥 83 92 94
1 陳小虎 59 70 78

兩張表具有完全相同的行名,用concat合并的代碼如下:

pd.concat([df1, df2])  #  注意中括號不等丟
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 張三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
0 馬大帥 83 92 94
1 陳小虎 59 70 78

若要合并后的 index 重新命名,可以加參數(shù)ignore_index = True,讓合并后數(shù)據(jù)的 index 重新從小到大命名:

pd.concat([df1, df2], ignore_index = True)
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 張三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
3 馬大帥 83 92 94
4 陳小虎 59 70 78

假如有下面的數(shù)據(jù):

df3 = pd.DataFrame({'姓名': ['張三', '李四', '王五'], '會計': [75, 78, 80], '管理學(xué)': [94, 96, 88]})
df3
姓名 會計 管理學(xué)
0 張三 75 94
1 李四 78 96
2 王五 80 88

df1 與 df3 的姓名相同,但列名不完全相同。我們想把 df3 的列添加到 df1 中,此時就要使用merge方法了,它的使用語法一般如下:

DataFrame.merge(right, how='inner', on=None)
right 需要合并的另一個 DataFrame 數(shù)據(jù)
how 默認(rèn)為 'inner',表示內(nèi)連接,取兩個數(shù)據(jù)表中匹配字段的交集進(jìn)行合并
'outer',表示外連接,取兩個數(shù)據(jù)表中匹配字段的并集進(jìn)行合并
'left',表示左連接,取左邊數(shù)據(jù)表中匹配字段進(jìn)行合并
'right',表示右連接,取右邊數(shù)據(jù)表中匹配字段進(jìn)行合并
on 匹配的字段(列),可以是一個或多個

因此,對于 df1 與 df3,用merge合并時,匹配的字段(列名)為’姓名’:

df1.merge(df3, on = '姓名')
姓名 統(tǒng)計學(xué) 高數(shù) 英語 會計 管理學(xué)
0 張三 85 82 84 75 94
1 李四 68 63 90 78 96
2 王五 90 88 78 80 88

merge也能實(shí)現(xiàn)concat的合并效果,例如,合并 df1 與 df2:

df1.merge(df2, on = ['姓名', '統(tǒng)計學(xué)', '高數(shù)', '英語'], how = 'outer')
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 張三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
3 馬大帥 83 92 94
4 陳小虎 59 70 78

在上面的代碼中,匹配的字段為所有的列,連接方式為外連接,實(shí)現(xiàn)結(jié)果與concat相同。若連接方式為其他類型,顯示效果如下:

df1.merge(df2, on = ['姓名', '統(tǒng)計學(xué)', '高數(shù)', '英語'], how = 'inner')  # 內(nèi)連接時兩個數(shù)據(jù)表匹配字段的交集為空
姓名 統(tǒng)計學(xué) 高數(shù) 英語
df1.merge(df2, on = ['姓名', '統(tǒng)計學(xué)', '高數(shù)', '英語'], how = 'left')  # 左連接時保留左數(shù)據(jù)表的所有匹配字段
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 張三 85 82 84
1 李四 68 63 90
2 王五 90 88 78
df1.merge(df2, on = ['姓名', '統(tǒng)計學(xué)', '高數(shù)', '英語'], how = 'right')  # 右連接時保留右數(shù)據(jù)表的所有匹配字段
姓名 統(tǒng)計學(xué) 高數(shù) 英語
0 馬大帥 83 92 94
1 陳小虎 59 70 78

在合并數(shù)據(jù)表時,若某些字段沒有對應(yīng)數(shù)據(jù),Pandas 會自動用 NaN 替代,下面的例子展示了不同連接方式的效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-641160.html

df1 = pd.DataFrame({'班級': ['一班', '二班', '一班'], '姓名': ['張三', '李四', '王五'], '性別': ['男', '男', '女'], '籍貫': ['北京', '上海', '重慶']})
df1
班級 姓名 性別 籍貫
0 一班 張三 北京
1 二班 李四 上海
2 一班 王五 重慶
df2 = pd.DataFrame({ '姓名': ['張三', '陳小虎'], '統(tǒng)計學(xué)': [85, 59]})
df2
姓名 統(tǒng)計學(xué)
0 張三 85
1 陳小虎 59
df1.merge(df2, on = '姓名')
班級 姓名 性別 籍貫 統(tǒng)計學(xué)
0 一班 張三 北京 85
df1.merge(df2, on = '姓名', how = 'outer') # 某些字段沒有對應(yīng)數(shù)據(jù),則顯示為 NaN
班級 姓名 性別 籍貫 統(tǒng)計學(xué)
0 一班 張三 北京 85.0
1 二班 李四 上海 NaN
2 一班 王五 重慶 NaN
3 NaN 陳小虎 NaN NaN 59.0
df1.merge(df2, on = '姓名', how = 'left')
班級 姓名 性別 籍貫 統(tǒng)計學(xué)
0 一班 張三 北京 85.0
1 二班 李四 上海 NaN
2 一班 王五 重慶 NaN
df1.merge(df2, on = '姓名', how = 'right')
班級 姓名 性別 籍貫 統(tǒng)計學(xué)
0 一班 張三 北京 85
1 NaN 陳小虎 NaN NaN 59

到了這里,關(guān)于【Pandas 入門-2】增加,刪除與合并數(shù)據(jù) concat, merge的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【python】數(shù)據(jù)可視化,使用pandas.merge()對dataframe和geopandas類型數(shù)據(jù)進(jìn)行數(shù)據(jù)對齊

    【python】數(shù)據(jù)可視化,使用pandas.merge()對dataframe和geopandas類型數(shù)據(jù)進(jìn)行數(shù)據(jù)對齊

    目錄 0.環(huán)境 1.適用場景 2.pandas.merge()函數(shù)詳細(xì)介紹 3.名詞解釋“數(shù)據(jù)對齊”(來自chatGPT3.5) 4.本文將給出兩種數(shù)據(jù)對齊的例子 1)dataframe類型數(shù)據(jù)和dataframe類型數(shù)據(jù)對齊(對齊NAME列); 數(shù)據(jù)對齊前的兩組數(shù)據(jù)集: 數(shù)據(jù)對齊后的數(shù)據(jù)集(通過pandas.merge()函數(shù)對齊): 代碼 2)

    2024年02月09日
    瀏覽(40)
  • Python 教學(xué) | Pandas 數(shù)據(jù)合并(含目錄文件合并案例)

    Python 教學(xué) | Pandas 數(shù)據(jù)合并(含目錄文件合并案例)

    目錄 Part? 1前言 Part2? Pandas 數(shù)據(jù)合并函數(shù) 1? df.append() 實(shí)現(xiàn)數(shù)據(jù)追加 (1)向表中追加相同結(jié)構(gòu)的表 (2)向表中追加不同結(jié)構(gòu)的表 (3)向數(shù)據(jù)中添加一行 2? pd.concat() 實(shí)現(xiàn)數(shù)據(jù)連接 (1)多個相同結(jié)構(gòu)數(shù)據(jù)縱向合并 (2)多個結(jié)構(gòu)不同的數(shù)據(jù)縱向合并 (3)多個數(shù)據(jù)橫向合并

    2024年01月17日
    瀏覽(27)
  • gitlab代碼合并(merge request )取消 [默認(rèn)刪除分支(Delete source branch)] 選項

    gitlab代碼合并(merge request )取消 [默認(rèn)刪除分支(Delete source branch)] 選項

    幾個人開發(fā)不同的項目,需要合并到一個共同的轉(zhuǎn)測分支。 我們在開發(fā)完代碼需要一起合并到另一個總分支時,提交 merge 請求會默認(rèn)勾選Delete source branch選項,如下圖所示: 因?yàn)槊總€人開發(fā)的是不同的項目,所以各個分支代碼不同,假使需要合并到相同的轉(zhuǎn)測分支時,而默

    2024年02月12日
    瀏覽(32)
  • Python Flask Web開發(fā)三:數(shù)據(jù)表的字段增加和刪除

    Python Flask Web開發(fā)三:數(shù)據(jù)表的字段增加和刪除

    在實(shí)際的開發(fā)中,數(shù)據(jù)表中的字段的增加和刪除是很正常的操作,在運(yùn)營的不斷提需求下,這個修改的頻率是很高的,那么在flask中如何進(jìn)行字段的增加和刪除呢?下面我來給大家講講 使用數(shù)據(jù)庫遷移工具(如 Flask-Migrate等)創(chuàng)建一個新的遷移腳本。這個腳本將包含對數(shù)據(jù)庫

    2024年02月09日
    瀏覽(33)
  • Python大數(shù)據(jù)之pandas快速入門(二)

    Python大數(shù)據(jù)之pandas快速入門(二)

    3.1 DataFrame 的行標(biāo)簽和列標(biāo)簽 1)如果所示,分別是 DataFrame 的行標(biāo)簽和列標(biāo)簽 2)獲取 DataFrame 的行標(biāo)簽 3)獲取 DataFrame 的列標(biāo)簽 4)設(shè)置 DataFrame 的行標(biāo)簽 3.2 DataFrame 的行位置編號和列位置編號 DataFrame 除了行標(biāo)簽和列標(biāo)簽之外,還具有行列位置編號。 行位置編號:從上到下

    2024年02月05日
    瀏覽(42)
  • 100天精通Python(數(shù)據(jù)分析篇)——第68天:Pandas數(shù)據(jù)清洗函數(shù)大全(判斷缺失、刪除空值、填補(bǔ)空值、替換元素、分割元素)
  • 解決pandas的concat函數(shù)導(dǎo)致索引失效的方法

    解決pandas的concat函數(shù)導(dǎo)致索引失效的方法

    最近在寫數(shù)據(jù)的時候看到用一個concat函數(shù)進(jìn)行整合,但是下面這段代碼之后就碰上個很奇怪的地方 這段代碼首先就是用dfs記錄了每一組數(shù)據(jù),最后使用concat函數(shù)進(jìn)行連接。在這之后我希望在特定位置插入一列數(shù)據(jù) 一共有三種類型的文本,10條數(shù)據(jù),在df格式下前面也有索引。

    2024年02月11日
    瀏覽(33)
  • 數(shù)據(jù)科學(xué)中的Python:NumPy和Pandas入門指南【第121篇—NumPy和Pandas】

    數(shù)據(jù)科學(xué)中的Python:NumPy和Pandas入門指南【第121篇—NumPy和Pandas】

    數(shù)據(jù)科學(xué)是當(dāng)今數(shù)字時代中的一個重要領(lǐng)域,而Python是數(shù)據(jù)科學(xué)家們最喜愛的編程語言之一。在這篇博客中,我們將介紹Python中兩個強(qiáng)大的庫——NumPy和Pandas,它們在數(shù)據(jù)處理和分析中發(fā)揮著重要作用。 NumPy是用于科學(xué)計算的基礎(chǔ)包,提供了高性能的多維數(shù)組對象( numpy.nda

    2024年03月15日
    瀏覽(21)
  • 【pandas基礎(chǔ)】--數(shù)據(jù)拆分與合并

    數(shù)據(jù)集拆分是將一個大型的數(shù)據(jù)集拆分為多個較小的數(shù)據(jù)集,可以讓數(shù)據(jù)更加清晰易懂,也方便對單個數(shù)據(jù)集進(jìn)行分析和處理。 同時,分開的數(shù)據(jù)集也可以分別應(yīng)用不同的數(shù)據(jù)分析方法進(jìn)行處理,更加高效和專業(yè)。 數(shù)據(jù)集合并則是將多個數(shù)據(jù)集合并成一個大的數(shù)據(jù)集,可以

    2024年02月05日
    瀏覽(13)
  • 【數(shù)據(jù)分析入門】人工智能、數(shù)據(jù)分析和深度學(xué)習(xí)是什么關(guān)系?如何快速入門 Python Pandas?

    【數(shù)據(jù)分析入門】人工智能、數(shù)據(jù)分析和深度學(xué)習(xí)是什么關(guān)系?如何快速入門 Python Pandas?

    本文詳細(xì)介紹了人工智能、數(shù)據(jù)分析和深度學(xué)習(xí)之間的關(guān)系,并就數(shù)據(jù)分析所需的Pandas庫做了胎教般的入門引導(dǎo)。祝讀得開心! ??本文是原 《數(shù)據(jù)分析大全》 、現(xiàn)改名為 《數(shù)據(jù)分析》 專欄的第二篇,我在寫這篇文章的時候突然意識到—— 單靠我是不可能把數(shù)據(jù)分析的方

    2024年02月14日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包