Pandas DataFrame处理数据——列处理

目录

一、插入数据为列

二、新增或修改列

三、对整列进行运算

四、用函数对列中的每个值进行处理

五、选择自己需要的列

六、修改列名

七、删除列


首先导入pandas库,创建一个数据框对象。

import pandas as pd
data = pd.DataFrame()

一、插入数据为列

将数据以列表或者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列修改为日期格式,这样才能进行日期运算

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

三、对整列进行运算

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

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

不过这样处理得到的差值数据类型是datetime库里的Timedelta对象,在数据分析中这样的数据类型意义不大,需要调用Timedelta的属性来提取具体的天数差,操作见第四节。

四、用函数对列中的每个值进行处理

用来处理的函数如果较为简单,可以使用如下方法,在apply方法中用lambda定义函数,其中x表示被处理的对象,在下面的代码中对应的是col_2这个Series中的每个“时间差”对象(Timedelta),用“.days”来访问天数属性,将时间差转换成天数(数据类型也会相应地变成整型)。

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

处理数据的函数如果比较复杂,也可以先定义函数,再对数据进行处理,定义的函数中第一个参数默认为数据框传入的值,如果有多个参数,在调用apply时要用args后加可迭代对象(如列表,元组)包裹起来,传入的实参与函数中的形参位置一一对应。

需要注意的是,将函数传入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":"天数差", "col_3":"日期"}, inplace=True)


# 也可以用以下方法,修改全部列名
columns = ["原日期", "今天", "天数差", "修改后日期"]
data.columns = columns

inplace=True表示在该对象上直接修改

七、删除列

方法比较简单,不过多赘述,直接上代码:

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

列表中的值表示列名,执行上方代码,会删除“原日期”和“今天”这两个列。

你可能感兴趣的:(pandas,python,开发语言)