最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas利用主表更新子表指定列小技巧

 更新時間:2025年05月02日 11:07:50   作者:袁袁袁袁滿  
本文主要介紹了Pandas利用主表更新子表指定列小技巧,通過創(chuàng)建主表和子表的DataFrame對象,并使用映射字典進行數(shù)據(jù)關聯(lián)和更新,實現(xiàn)了從主表到子表的同步操作,下面就來介紹一下,感興趣的可以了解一下

一、前言

工作的小技巧,利用pandas讀取主表和子表,利用主表的指定列,更新子表的指定列。

案例:

主表:
   uid name
0  101   小白
1  102   小紅
2  103   小藍

子表:
  name zb_uid
0   小白   None
1   小紅   None
2   小綠   None

需求:主表的name列數(shù)據(jù)和子表name列數(shù)據(jù)數(shù)據(jù)相同時,將 主表對應的 uid 賦值給 子表的 zb_uid

二、基本案例

1. 創(chuàng)建主表數(shù)據(jù)

import pandas as pd

# 主表示例數(shù)據(jù)
data_sheet = {
    'uid': [101, 102, 103],
    'name': ['小白', '小紅', '小藍'],
}
df_sheet = pd.DataFrame(data_sheet)
print('主表:')
print(df_sheet)
  • data_sheet 是一個字典,其中鍵 'uid' 對應一個包含三個整數(shù)的列表,表示用戶的唯一標識;鍵 'name' 對應一個包含三個字符串的列表,表示用戶的姓名。
  • pd.DataFrame(data_sheet) 把 data_sheet 字典轉換為 pandas 的 DataFrame 對象 df_sheetDataFrame 是一種二維表格型數(shù)據(jù)結構,類似于電子表格或 SQL 表。
  • 最后通過 print 函數(shù)打印出主表的內(nèi)容。

2. 創(chuàng)建映射字典

# 創(chuàng)建一個映射字典,將 name 映射到 uid
name_uid_map = df_sheet.set_index('name')['uid'].to_dict()
print('映射字典:',name_uid_map)
  • df_sheet.set_index('name') 把 df_sheet 的 'name' 列設置為索引,這樣就可以通過姓名來定位對應的行。
  • ['uid'] 選取 uid 列的數(shù)據(jù)。
  • to_dict() 把選取的數(shù)據(jù)轉換為字典,字典的鍵是姓名,值是對應的 uid
  • 最后通過 print 函數(shù)打印出這個映射字典。

3. 創(chuàng)建子表數(shù)據(jù)

# 子表示例數(shù)據(jù)
data_sheet1 = {
    'name': ['小白', '小紅', '小綠'],
    'zb_uid': [None,None,None]
}
df_sheet1 = pd.DataFrame(data_sheet1)
print('子表:')
print(df_sheet1)
  • data_sheet1 是一個字典,鍵 'name' 對應一個包含三個字符串的列表,表示用戶姓名;鍵 'zb_uid' 對應一個包含三個 None 值的列表,這里 zb_uid 初始值都為空,后續(xù)會進行更新。
  • pd.DataFrame(data_sheet1) 將 data_sheet1 字典轉換為 DataFrame 對象 df_sheet1。
  • 最后通過 print 函數(shù)打印出子表的內(nèi)容。

4. 更新子表的 zb_uid 列

# 更新子表的 zb_uid 列
df_sheet1['zb_uid'] = df_sheet1['name'].map(name_uid_map).fillna(df_sheet1['zb_uid'])
  • df_sheet1['name'].map(name_uid_map) 會根據(jù) name_uid_map 字典,將 df_sheet1 中 'name' 列的每個值映射為對應的 uid。如果 'name' 列的值在 name_uid_map 字典中不存在,就會映射為 NaN。
  • fillna(df_sheet1['zb_uid']) 把映射結果中的 NaN 值用 df_sheet1 中原來的 'zb_uid' 列的值填充。這里由于 zb_uid 初始值為 None,在 pandas 中會被視為 NaN,所以實際操作就是保留原來的 NaN 值。
  • 最后把更新后的值賦給 df_sheet1 的 'zb_uid' 列。

5. 完整代碼

import pandas as pd


# 主表示例數(shù)據(jù)
data_sheet = {
    'uid': [101, 102, 103],
    'name': ['小白', '小紅', '小藍'],
}
df_sheet = pd.DataFrame(data_sheet)
print('主表:')
print(df_sheet)
# 創(chuàng)建一個映射字典,將 name 映射到 uid
name_uid_map = df_sheet.set_index('name')['uid'].to_dict()
print('映射字典:',name_uid_map)


# 子表示例數(shù)據(jù)
data_sheet1 = {
    'name': ['小白', '小紅', '小綠'],
    'zb_uid': [None,None,None]
}
df_sheet1 = pd.DataFrame(data_sheet1)
print('子表:')
print(df_sheet1)

# 更新子表的 zb_uid 列
df_sheet1['zb_uid'] = df_sheet1['name'].map(name_uid_map).fillna(df_sheet1['zb_uid'])

print("更新后的子表:")
print(df_sheet1)

運行結果:

主表:
   uid name
0  101   小白
1  102   小紅
2  103   小藍
子表:
  name zb_uid
0   小白   None
1   小紅   None
2   小綠   None
映射字典: {'小白': 101, '小紅': 102, '小藍': 103}
更新后的子表:
  name  zb_uid
0   小白   101.0
1   小紅   102.0
2   小綠     NaN

6. 總結

這段代碼的主要功能是根據(jù)主表中姓名和 uid 的對應關系,更新子表中 zb_uid 列的值。如果子表中的姓名在主表中存在,就用對應的 uid 填充 zb_uid;如果不存在,則保持 zb_uid 為空。

三、升級案例

在基本案例的基礎上,根據(jù)名字和拼音的映射字典,更新主表和子表的name字段:

import pandas as pd


def get_namePingyingMap():
	// 下面方式是手動建映射字典,當然如果你有數(shù)據(jù)庫也可以從數(shù)據(jù)庫讀取然后建映射字典
    name_pingying_map = {'小白':'xiaobai','小紅':'xiaohong','小藍':'xiaolan','小綠':'xiaolù'}
    print('name_pingying_map映射字典:', name_pingying_map)

    return name_pingying_map


# 主表示例數(shù)據(jù)
data_sheet = {
    'uid': [101, 102, 103],
    'name': ['小白', '小紅', '小藍'],
}
df_sheet = pd.DataFrame(data_sheet)
print('主表:')
print(df_sheet)
# 更新主表的 name 列
name_pingying_map = get_namePingyingMap()
df_sheet['name'] = df_sheet['name'].map(name_pingying_map).fillna(df_sheet['name'])
print("更新后的主表:")
print(df_sheet)
# 創(chuàng)建一個映射字典,將 name 映射到 uid
name_uid_map = df_sheet.set_index('name')['uid'].to_dict()
print('name_uid_map映射字典:',name_uid_map)

# 子表示例數(shù)據(jù)
data_sheet1 = {
    'name': ['小白', '小紅', '小綠'],
    'zb_uid': [None,None,None]
}
df_sheet1 = pd.DataFrame(data_sheet1)
print('子表:')
print(df_sheet1)

# 更新子表的 name 列
df_sheet1['name'] = df_sheet1['name'].map(name_pingying_map).fillna(df_sheet1['name'])
# 更新子表的 zb_uid 列
df_sheet1['zb_uid'] = df_sheet1['name'].map(name_uid_map).fillna(df_sheet1['zb_uid'])

print("更新后的子表:")
print(df_sheet1)

運行結果:

主表:
   uid name
0  101   小白
1  102   小紅
2  103   小藍
name_pingying_map映射字典: {'小白': 'xiaobai', '小紅': 'xiaohong', '小藍': 'xiaolan', '小綠': 'xiaolù'}
更新后的主表:
   uid      name
0  101   xiaobai
1  102  xiaohong
2  103   xiaolan
name_uid_map映射字典: {'xiaobai': 101, 'xiaohong': 102, 'xiaolan': 103}
子表:
  name zb_uid
0   小白   None
1   小紅   None
2   小綠   None
更新后的子表:
       name  zb_uid
0   xiaobai   101.0
1  xiaohong   102.0
2    xiaolù     NaN

到此這篇關于Pandas利用主表更新子表指定列小技巧的文章就介紹到這了,更多相關Pandas 更新子表指定列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • Python處理JSON文件的完整流程(讀取、解析、修改和保存)

    Python處理JSON文件的完整流程(讀取、解析、修改和保存)

    JSON是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,也易于機器解析和生成,以下是 JSON 文件的完整定義方法和規(guī)范,本文還介紹了使用Python處理JSON文件的完整流程,包括讀取、解析、修改和保存JSON數(shù)據(jù)的方法,需要的朋友可以參考下
    2025-11-11
  • Python實現(xiàn)讀取.nc數(shù)據(jù)并提取指定時間與經(jīng)緯度維度對應的變量數(shù)值

    Python實現(xiàn)讀取.nc數(shù)據(jù)并提取指定時間與經(jīng)緯度維度對應的變量數(shù)值

    這篇文章主要為大家詳細介紹了如何使用Python語言的netCDF4庫實現(xiàn)讀取.nc格式的數(shù)據(jù)文件,并提取指定維(時間、經(jīng)度與緯度)下的變量數(shù)據(jù),需要的可以了解下
    2024-02-02
  • Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉頁面

    Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉頁面

    這篇文章主要介紹了Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python跳出多重循環(huán)的方法示例

    Python跳出多重循環(huán)的方法示例

    這篇文章主要介紹了Python跳出多重循環(huán)的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    本課程實現(xiàn)使用 Python 從 Excel 讀取數(shù)據(jù),并使用 Matplotlib 繪制成二維圖像。這一過程中,將通過一系列操作來美化圖像,最終得到一個可以出版級別的圖像。本課程對于需要書寫實驗報告,學位論文,發(fā)表文章,做報告的學員具有較大價值
    2023-02-02
  • Python+SimpleRNN實現(xiàn)股票預測詳解

    Python+SimpleRNN實現(xiàn)股票預測詳解

    這篇文章主要為大家詳細介紹了如何利用Python和SimpleRNN實現(xiàn)股票預測效果,文中的示例代碼講解詳細,對我們學習有一定幫助,需要的可以參考一下
    2022-05-05
  • Python簡單讀取json文件功能示例

    Python簡單讀取json文件功能示例

    這篇文章主要介紹了Python簡單讀取json文件功能,結合實例形式分析了Python文件讀取及json格式數(shù)據(jù)相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • Python使用read_csv讀數(shù)據(jù)遇到分隔符問題的2種解決方式

    Python使用read_csv讀數(shù)據(jù)遇到分隔符問題的2種解決方式

    read.csv()可以從帶分隔符的文本文件中導入數(shù)據(jù),下面這篇文章主要給大家介紹了關于Python使用read_csv讀數(shù)據(jù)遇到分隔符問題的2種解決方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 使用matplotlib修改坐標軸,將y軸的間距設置為某一個值

    使用matplotlib修改坐標軸,將y軸的間距設置為某一個值

    這篇文章主要介紹了使用matplotlib修改坐標軸,將y軸的間距設置為某一個值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • CentOS下安裝python3.7全過程

    CentOS下安裝python3.7全過程

    文章詳細介紹了如何在Linux系統(tǒng)上從源碼編譯并安裝Python 3.7,并解決了一些常見的安裝問題,如依賴包缺失、模塊未找到等,同時,還介紹了如何將新安裝的Python 3設置為默認Python,并確保yum等系統(tǒng)工具能夠正常使用Python 3
    2026-01-01

最新評論

永康市| 高邮市| 景洪市| 宜兰市| 临洮县| 桦甸市| 上高县| 巫山县| 定州市| 海城市| 金寨县| 顺昌县| 博爱县| 巴塘县| 汝阳县| 稻城县| 咸丰县| 民勤县| 原平市| 旬阳县| 铜鼓县| 苏尼特左旗| 兴化市| 铜川市| 天门市| 新疆| 明光市| 杭锦后旗| 新竹市| 汉寿县| 阳谷县| 于都县| 巴塘县| 斗六市| 丹阳市| 沅陵县| 新和县| 克山县| 增城市| 桂阳县| 陆川县|