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的解决方案…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |