目录
首先导入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)
列表中的值表示列名,执行上方代码,会删除“原日期”和“今天”这两个列。