<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          怎樣使用Pandas的map和apply函數(shù)?

          共 1598字,需瀏覽 4分鐘

           ·

          2021-04-30 16:34

          數(shù)據(jù)轉(zhuǎn)換函數(shù)對比:map、apply、applymap:

          1.  map:只用于Series,實現(xiàn)每個值->值的映射;

          2. apply:用于Series實現(xiàn)每個值的處理,用于Dataframe實現(xiàn)某個軸的Series的處理;

          3. applymap:只能用于DataFrame,用于處理該DataFrame的每個元素;

          1. map用于Series值的轉(zhuǎn)換

          實例:將股票代碼英文轉(zhuǎn)換成中文名字

          Series.map(dict) or Series.map(function)均可

          import pandas as pd
          stocks = pd.read_excel('./datas/stocks/互聯(lián)網(wǎng)公司股票.xlsx')
          stocks.head()

          stocks["公司"].unique()

          array(['BIDU', 'BABA', 'IQ', 'JD'], dtype=object)
          # 公司股票代碼到中文的映射,注意這里是小寫
          dict_company_names = {
          "bidu": "百度",
          "baba": "阿里巴巴",
          "iq": "愛奇藝",
          "jd": "京東"
          }

          方法1:Series.map(dict)

          stocks["公司中文1"] = stocks["公司"].str.lower().map(dict_company_names)
          stocks.head()

          方法2:Series.map(function)

          function的參數(shù)是Series的每個元素的值

          stocks["公司中文2"] = stocks["公司"].map(lambda x : dict_company_names[x.lower()])
          stocks.head()

          2. apply用于Series和DataFrame的轉(zhuǎn)換

          • Series.apply(function), 函數(shù)的參數(shù)是每個值

          • DataFrame.apply(function), 函數(shù)的參數(shù)是Series

          Series.apply(function)

          function的參數(shù)是Series的每個值

          stocks["公司中文3"] = stocks["公司"].apply(
          lambda x : dict_company_names[x.lower()])
          stocks.head()

          DataFrame.apply(function)

          function的參數(shù)是對應軸的Series

          stocks["公司中文4"] = stocks.apply(
          lambda x : dict_company_names[x["公司"].lower()],
          axis=1)

          注意這個代碼:
          1、apply是在stocks這個DataFrame上調(diào)用;
          2、lambda x的x是一個Series,因為指定了axis=1所以Seires的key是列名,可以用x[‘公司’]獲取

          stocks.head()

          3. applymap用于DataFrame所有值的轉(zhuǎn)換

          sub_df = stocks[['收盤', '開盤', '高', '低', '交易量']]
          sub_df.head()

          # 將這些數(shù)字取整數(shù),應用于所有元素
          sub_df.applymap(lambda x : int(x))

          # 直接修改原df的這幾列
          stocks.loc[:, ['收盤', '開盤', '高', '低', '交易量']] = sub_df.applymap(lambda x : int(x))

          stocks.head()


          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久伦理 | 欧美天天好逼 | 操逼免费网站 | av在线www | 色色网的五月天 |