Python - 在数据框中创建包含年份和月份的新列

时间:2016-05-19 16:23:11

标签: python pandas

我有一个如下数据框:DateTaken是日期时间格式

StudentId    DateTaken              Rating        Score
101           2015-09-16 14:04:23     3.6         85
101           2015-10-16 14:21:31     3.2         90
102           2015-10-21 15:13:21     2.0         75

我想创建一个仅将年份和月份组合在一起的列,如:

StudentId    DateTaken              Rating       Score     YearMo
101           2015-09-16 14:04:23     3.6         85       2015-09
101           2015-10-16 14:21:31     3.2         90       2015-10
102           2015-10-21 15:13:21     2.0         75       2015-10

我找到了一个使用Group By的解决方法,它让我得到了我的程序所需要但对我而言,解决这个问题的挑战仍然存在。有可能吗?

3 个答案:

答案 0 :(得分:1)

见评论.....我没有清楚地使用该字段。我需要保留进行日期计算的能力

我能够用

解决我的问题
df['DT2']= df['DateTaken'].values.astype('<M8[M]')

截断我的数据给了我2015-09-01 ..这符合我的目的 谢谢你的帮助

答案 1 :(得分:0)

您可以在列表推导中创建一个值的片段,如下所示:

Stripe_Class

希望这项工作

答案 2 :(得分:0)

最简单的解决方案是使用子字符串:

year_mo = date_taken[0:7]

仅当您的DateTaken字段的日期一致时才有效。

另一种方法是加载时间戳并将其打印为新格式。

对于这个python-dateutil是你的朋友。

from dateutil import parser

# this gives you back a datetime object 
timestamp_taken = parser.parse(date_taken)

year_mo = timestamp_taken.strftime('%Y-%m')