欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pandas如何給DataFrame新增列并賦值

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

pandas給DataFrame新增列并賦值

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

索引問題

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

新增多列的簡單方式

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

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

1、df[['col']]索引得到的對象是一個DataFrame,不再是一個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時,需要注意索引問題。

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

首先導(dǎo)入pandas庫,創(chuàng)建一個數(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"]

二、新增或修改列

增加一個列名為“today”的列

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

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

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

三、對整列進(jì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ù)對列中的每個值進(jìn)行處理

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

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

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

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

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í)行上方代碼,會刪除“原日期”和“今天”這兩個列。

總結(jié)

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

相關(guān)文章

  • 解決pandas.DataFrame.fillna 填充Nan失敗的問題

    解決pandas.DataFrame.fillna 填充Nan失敗的問題

    今天小編就為大家分享一篇解決pandas.DataFrame.fillna 填充Nan失敗的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • PyTorch中permute的基本用法示例

    PyTorch中permute的基本用法示例

    pytorch中的permute就像是numpy中的transpose()函數(shù)一樣,根據(jù)指定的維度進(jìn)行轉(zhuǎn)置,下面這篇文章主要給大家介紹了關(guān)于PyTorch中permute的基本用法,需要的朋友可以參考下
    2022-04-04
  • python實現(xiàn)人像動漫化的示例代碼

    python實現(xiàn)人像動漫化的示例代碼

    這篇文章主要介紹了python實現(xiàn)人像動漫化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Keras使用預(yù)訓(xùn)練模型遷移學(xué)習(xí)單通道灰度圖像詳解

    Keras使用預(yù)訓(xùn)練模型遷移學(xué)習(xí)單通道灰度圖像詳解

    這篇文章主要介紹了Keras使用預(yù)訓(xùn)練模型遷移學(xué)習(xí)單通道灰度圖像詳解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python中的Numpy二維數(shù)組遍歷與二維數(shù)組切片后遍歷效率比較

    python中的Numpy二維數(shù)組遍歷與二維數(shù)組切片后遍歷效率比較

    這篇文章主要介紹了python中的Numpy二維數(shù)組遍歷與二維數(shù)組切片后遍歷效率比較,在python-numpy使用中,可以用雙層?for循環(huán)對數(shù)組元素進(jìn)行訪問,也可以切片成每一行后進(jìn)行一維數(shù)組的遍歷,下面小編擊來舉例介紹吧,需要的朋友可以參考一下
    2022-03-03
  • Python中靜態(tài)方法,類方法,屬性方法使用方法

    Python中靜態(tài)方法,類方法,屬性方法使用方法

    這篇文章主要介紹了Python中靜態(tài)方法,類方法,屬性方法使用方法,文章圍繞主題的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 使用wxpython實現(xiàn)的一個簡單圖片瀏覽器實例

    使用wxpython實現(xiàn)的一個簡單圖片瀏覽器實例

    這篇文章主要介紹了使用wxpython實現(xiàn)的一個簡單圖片瀏覽器實例,根據(jù)自己的特殊需求而寫,需要的朋友可以參考下
    2014-07-07
  • Python生成任意波形并存為txt的實現(xiàn)

    Python生成任意波形并存為txt的實現(xiàn)

    本文主要介紹了Python生成任意波形并存為txt的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解在python中如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮

    詳解在python中如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮

    Python有一些內(nèi)置庫用于處理數(shù)據(jù)壓縮和解壓縮,其中一個就是zlib模塊,這個模塊為DEFLATE壓縮算法和相關(guān)的gzip(文件格式)提供了支持,在這篇文章中,我們將深入探討如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮
    2023-06-06
  • 深入解析Python小白學(xué)習(xí)【操作列表】

    深入解析Python小白學(xué)習(xí)【操作列表】

    這篇文章主要介紹了Python操作列表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論