加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将Pandas系列(基于索引)分成多个数据帧列

发布时间:2020-12-20 11:05:29 所属栏目:Python 来源:网络整理
导读:举个例子,我试图将一个字段’date’切成YYYYMMDD格式的日期,分为3个单独的字段(‘year’,’month’,’day’). 我有一种方法,一次分配一个值,但我认为有一种更有效的方法来产生所需的结果. 当前解决方案 df['year'] = df['date'].astype(str).apply(lambda x:
举个例子,我试图将一个字段’date’切成YYYYMMDD格式的日期,分为3个单独的字段(‘year’,’month’,’day’).

我有一种方法,一次分配一个值,但我认为有一种更有效的方法来产生所需的结果.

当前解决方案

df['year'] = df['date'].astype(str).apply(lambda x: x[:4])
df['month'] = df['date'].astype(str).apply(lambda x: x[4:6])
df['day'] = df['date'].astype(str).apply(lambda x: x[6:8])

以下是我尝试简化代码的一个示例:

df['year'],df['month'],df['day'] = df['date'].astype(str).apply(lambda x: [x[:4],x[4:6],x[6:8]])

解决方法

假设列日期是字符串(对象)dtype:

In [18]: df
Out[18]:
       date
0  20180131
1  20180611
2  20180513

In [19]: df.dtypes
Out[19]:
date    object
dtype: object

解:

In [22]: df[['year','month','day']] = df.date.str.extract(r'(d{4})(d{2})(d{2})').astype(int)

In [23]: df
Out[23]:
       date  year  month  day
0  20180131  2018      1   31
1  20180611  2018      6   11
2  20180513  2018      5   13

In [24]: df.dtypes
Out[24]:
date     object
year      int32
month     int32
day       int32
dtype: object

PS如果日期是数字dtype,那么我选择@ ALollz的解决方案……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读