将 int64 熊猫列分成两列

共4个回答,已解决, 标签: python pandas

我得到了一个数据集,它使用 2019 年 5 月的格式 52019 将日期作为整数。我把它放在一个 Pandas 数据框中,我需要将日期格式提取到一个月列和一年列中, 但是我不知道如何为 int64 数据类型做到这一点,也不知道如何在两位数月内处理它。所以我想拿一些

ID 日期
22019
2 32019
3 52019
5 102019

让它成为

年 ID 月
2 2019
2 2019
2019 5
2019 10

我该怎么办?

第1个答案(采用)

使用//%

Df ['月'],df ['年'] = df.Date/10000,df.Date % 10000
Df
出【 528 】:
年月 ID 日期
22019 2 2019
1 2 32019 3 2019
52019 5 2019 2 3
3 5 102019 10 2019
第2个答案

Divmod

Df ['月'],df ['年'] = np.divmod (df.Date,10000)

Df

年月 ID 日期
22019 2 2019
1 2 32019 3 2019
52019 5 2019 2 3
3 5 102019 10 2019

使用不改变原始数据帧分配

Df.assign (zip ([“月” 、 “年”) 、 np.divmod (df.Date,10000)

年月 ID 日期
22019 2 2019
1 2 32019 3 2019
52019 5 2019 2 3
3 5 102019 10 2019
第3个答案

使用:

S = pd.to _ date (df.pop ('date'),format = '% m % y') # 转换为日期时间,pop 删除 col
Df ['月',df ['年'] = s.dt.月,s.dt.年 # 提取月份和年份
打印 (df)

年 ID 月
2 2019
1 2 3 2019
2 2019
3 5 10 2019
第4个答案

Str.精华可以处理弄清楚这个月是 1 还是 2 位数的棘手部分。

(Df [“日期”)。
。提取 (r '^ (?P\ D {1,2}) (?P\ D {4}) $ ')
。(Int))

年月
2019 2
1 3 2019
2 2019
2019 10

如果保证你的数字只有 5 或 6 位数字,你也可以使用字符串切片 (如果没有,使用Str.精华以上):

U = df [“日期”]。
Df ['月'] 、 df ['年'] = u.str [:-4] 、 u.str [-4:]
Df

年月 ID 日期
22019 2 2019
1 2 32019 3 2019
52019 5 2019 2 3
3 5 102019 10 2019

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? 如何破坏 Python 对象并释放内存 将具有特殊格式的文本文档转换为熊猫数据框架 用两本字典绘制一只熊猫专栏图