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

pandas如何給DataFrame新增列并賦值

 更新時(shí)間:2024年02月02日 08:45:25   作者:S_o_l_o_n  
這篇文章主要介紹了pandas如何給DataFrame新增列并賦值問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

pandas給DataFrame新增列并賦值

 給DataFrame新增列的話,除了join,merge,concat這些函數(shù)之外,還可以通過簡單的df['new_column']=values的形式對其新增列,但是在使用這種方式新增列時(shí),需要注意索引問題以及新增多列時(shí)該如何操作。

索引問題

這個(gè)問題只有在等號右邊的對象是Series或者DataFrame時(shí)需要注意,因?yàn)檫@時(shí)等號右邊的對象是有索引的,這樣賦值時(shí),要保證新增對象的索引和左邊對象的索引一致,不然也只會(huì)保存一致的索引對應(yīng)的值,其他的值為NaN。當(dāng)然,對于新增一列的情形,可以直接在等號右邊以列表或者ndarray等沒有索引的可迭代對象賦值,從而避免索引問題。但是對于新增多列的情形,就不能用這種方式避免索引問題的,具體原因如下。

新增多列的簡單方式

新增多列時(shí),這里講的時(shí)上述的簡單賦值方式,而不是利用join,merge,concat等這些函數(shù)去實(shí)現(xiàn)。不同于新增一列,新增一列可以直接用df['new_col']=values的方式,新增多列時(shí),需要用df[['col1','col2',...]]=values的方式,里面需要用列表包含多個(gè)新增的列名,此外更重要的是,這時(shí)的values必須得是DataFrame,往往我們?nèi)菀紫氘?dāng)然的以為這時(shí)values也可以是ndarray或者list等對象,但實(shí)際則不然,其必須得是DataFrame,所以這時(shí)也一定要考慮索引問題;當(dāng)然,其實(shí)完全可以實(shí)現(xiàn)和新增一列相同的形式,即values也可以是其他對象,這里之所以這樣要求其必須是DataFrame,只是一種規(guī)定而已,似乎并沒有其他合理的理由。

其他需要注意的點(diǎn)以及小結(jié)

1、df[['col']]索引得到的對象是一個(gè)DataFrame,不再是一個(gè)Series,所以要對其新增列,右邊的對象也應(yīng)該是DataFrame;

2、不能用loc或者iloc進(jìn)行新增列的賦值;

3、所以新增單列,用df['col']=values的方式,values可以為Series,list或ndarray等對象,或者也可以用df[['col']]=values,values必須為DataFrame;新增多列用df[['col1','col2',...]]=values,values必須為DataFrame;當(dāng)values為Series或者DataFrame時(shí),需要注意索引問題。

DataFrame處理數(shù)據(jù)——列處理

首先導(dǎo)入pandas庫,創(chuàng)建一個(gè)數(shù)據(jù)框?qū)ο蟆?/p>

import pandas as pd
data = pd.DataFrame()

一、插入數(shù)據(jù)為列

將數(shù)據(jù)以列表或者Series對象的形式傳給data,列名為“col_1”,可自己定義

data["col_1"] = ["2023-01-01", "2023-02-05", "2023-03-14", "2023-12-31", "2023-05-06"]

二、新增或修改列

增加一個(gè)列名為“today”的列

from datetime import datetime as dt
data["today"] = dt.today()

將col_1列修改為日期格式,這樣才能進(jìn)行日期運(yùn)算

data["col_1"] = pd.to_datetime(data["col_1"])

三、對整列進(jìn)行運(yùn)算

用today列減去col_1列,生成col_2列

data["col_2"] = data["today"] - data["col_1"]

不過這樣處理得到的差值數(shù)據(jù)類型是datetime庫里的Timedelta對象,在數(shù)據(jù)分析中這樣的數(shù)據(jù)類型意義不大,需要調(diào)用Timedelta的屬性來提取具體的天數(shù)差,操作見第四節(jié)。

四、用函數(shù)對列中的每個(gè)值進(jìn)行處理

用來處理的函數(shù)如果較為簡單,可以使用如下方法,在apply方法中用lambda定義函數(shù),其中x表示被處理的對象,在下面的代碼中對應(yīng)的是col_2這個(gè)Series中的每個(gè)“時(shí)間差”對象(Timedelta),用“.days”來訪問天數(shù)屬性,將時(shí)間差轉(zhuǎn)換成天數(shù)(數(shù)據(jù)類型也會(huì)相應(yīng)地變成整型)。

data["col_2"] = data["col_2"].apply(lambda x: x.days)

處理數(shù)據(jù)的函數(shù)如果比較復(fù)雜,也可以先定義函數(shù),再對數(shù)據(jù)進(jìn)行處理,定義的函數(shù)中第一個(gè)參數(shù)默認(rèn)為數(shù)據(jù)框傳入的值,如果有多個(gè)參數(shù),在調(diào)用apply時(shí)要用args后加可迭代對象(如列表,元組)包裹起來,傳入的實(shí)參與函數(shù)中的形參位置一一對應(yīng)。

需要注意的是,將函數(shù)傳入apply時(shí)不需要加括號。

def get_date_format(x, y):
    x = dt.strftime(x, y)
    return x
 
data["col_3"] = data["col_1"].apply(get_date_format, args=["%Y年%m月%d日"])

五、選擇自己需要的列

方法比較簡單,不過多贅述,直接上代碼:

data = data[["col_2", "col_3"]]

六、修改列名

方法比較簡單,不過多贅述,直接上代碼:

data.rename(columns={"col_2":"天數(shù)差", "col_3":"日期"}, inplace=True)
 
# 也可以用以下方法,修改全部列名
columns = ["原日期", "今天", "天數(shù)差", "修改后日期"]
data.columns = columns
inplace=True表示在該對象上直接修改

七、刪除列

方法比較簡單,不過多贅述,直接上代碼:

data.drop(["原日期", "今天"], axis=1, inplace=True)

列表中的值表示列名,執(zhí)行上方代碼,會(huì)刪除“原日期”和“今天”這兩個(gè)列。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python列表常見操作詳解(獲取,增加,刪除,修改,排序等)

    Python列表常見操作詳解(獲取,增加,刪除,修改,排序等)

    這篇文章主要介紹了Python列表常見操作,結(jié)合實(shí)例形式總結(jié)分析了Python列表常見的獲取、增加、刪除、修改、排序、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 使用Python實(shí)現(xiàn)惰性加載的三種方法詳解

    使用Python實(shí)現(xiàn)惰性加載的三種方法詳解

    在現(xiàn)代軟件開發(fā)中,惰性加載是一種優(yōu)化技術(shù),用于延遲計(jì)算或加載資源密集型屬性,直至首次訪問時(shí)才執(zhí)行,Python提供了豐富的元類與屬性操作機(jī)制,允許我們通過getattr、getattribute和setattr方法實(shí)現(xiàn)惰性屬性管理,本文將詳細(xì)探討這三種方法的實(shí)現(xiàn)細(xì)節(jié),需要的朋友可以參考下
    2025-10-10
  • Python判斷字符串是否xx開始或結(jié)尾的示例

    Python判斷字符串是否xx開始或結(jié)尾的示例

    今天小編就為大家分享一篇Python判斷字符串是否xx開始或結(jié)尾的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • selenium+python自動(dòng)化測試之使用webdriver操作瀏覽器的方法

    selenium+python自動(dòng)化測試之使用webdriver操作瀏覽器的方法

    這篇文章主要介紹了selenium+python自動(dòng)化測試之使用webdriver操作瀏覽器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • python實(shí)現(xiàn)每次處理一個(gè)字符的三種方法

    python實(shí)現(xiàn)每次處理一個(gè)字符的三種方法

    這篇文章主要介紹了python實(shí)現(xiàn)每次處理一個(gè)字符的三種方法,是非常實(shí)用的字符串操作技巧,需要的朋友可以參考下
    2014-10-10
  • Python使用itertools模塊實(shí)現(xiàn)排列組合功能示例

    Python使用itertools模塊實(shí)現(xiàn)排列組合功能示例

    這篇文章主要介紹了Python使用itertools模塊實(shí)現(xiàn)排列組合功能,涉及Python基于itertools模塊product、permutations與combinations_with_replacement方法進(jìn)行排列、組合等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-07-07
  • 使用Python實(shí)現(xiàn)Excel表格轉(zhuǎn)圖片

    使用Python實(shí)現(xiàn)Excel表格轉(zhuǎn)圖片

    在數(shù)據(jù)處理與信息分享過程中,Excel表格作為一種強(qiáng)大的數(shù)據(jù)管理工具被廣泛應(yīng)用,這篇文章主要為大家詳細(xì)介紹了如何使用Python將Excel表格轉(zhuǎn)換為圖片,需要的可以參考下
    2024-04-04
  • python基于socketserver實(shí)現(xiàn)并發(fā),驗(yàn)證客戶端的合法性

    python基于socketserver實(shí)現(xiàn)并發(fā),驗(yàn)證客戶端的合法性

    TCP協(xié)議的socket一次只能和一個(gè)客戶端通信, 而socketsever可以時(shí)間和多個(gè)客戶端通信。本文將講解socketserver的具體使用
    2021-05-05
  • Pytorch隨機(jī)數(shù)生成常用的4種方法匯總

    Pytorch隨機(jī)數(shù)生成常用的4種方法匯總

    隨機(jī)數(shù)廣泛應(yīng)用在科學(xué)研究,但是計(jì)算機(jī)無法產(chǎn)生真正的隨機(jī)數(shù),一般成為偽隨機(jī)數(shù),下面這篇文章主要給大家介紹了關(guān)于Pytorch隨機(jī)數(shù)生成常用的4種方法,需要的朋友可以參考下
    2023-05-05
  • Python基于進(jìn)程池實(shí)現(xiàn)多進(jìn)程過程解析

    Python基于進(jìn)程池實(shí)現(xiàn)多進(jìn)程過程解析

    這篇文章主要介紹了Python基于進(jìn)程池實(shí)現(xiàn)多進(jìn)程過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評論

台中县| 南靖县| 原平市| 洪湖市| 古蔺县| 岳阳县| 巴青县| 镇康县| 古蔺县| 集贤县| 蓝山县| 富裕县| 萨嘎县| 临清市| 凌海市| 中江县| 图木舒克市| 蕲春县| 长沙市| 安新县| 张家界市| 景德镇市| 三江| 衡东县| 遂平县| 抚宁县| 台州市| 泾阳县| 皋兰县| 新丰县| 福州市| 宜都市| 浠水县| 睢宁县| 嘉义市| 潜江市| 岳阳县| 合肥市| 凯里市| 榕江县| 方正县|