如何将日期时间值更改为单独格式化的值

问题描述 投票:1回答:2

我有一个数据集,不幸的是它具有零星的DateTime值,而不是int或str。

例如,如何遍历数据库并将2019-05-03 00:00:00替换为5-3,如何编辑值?

我已经尝试了一些for循环,但无济于事。有熊猫捷径吗?

,age,menopause,tumor-size,inv-nodes,node-caps,deg-malig,breast,breast-quad,irradiat,Class
0,40-49,premeno,15-19,0-2,yes,3,right,left_up,no,recurrence-events
1,50-59,ge40,15-19,0-2,no,1,right,central,no,no-recurrence-events
2,50-59,ge40,35-39,0-2,no,2,left,left_low,no,recurrence-events
3,40-49,premeno,35-39,0-2,yes,3,right,left_low,yes,no-recurrence-events
4,40-49,premeno,30-34,2019-05-03 00:00:00,yes,2,left,right_up,no,recurrence-events
5,50-59,premeno,25-29,2019-05-03 00:00:00,no,2,right,left_up,yes,no-recurrence-events
6,50-59,ge40,40-44,0-2,no,3,left,left_up,no,no-recurrence-events
7,40-49,premeno,2014-10-01 00:00:00,0-2,no,2,left,left_up,no,no-recurrence-events
8,40-49,premeno,0-4,0-2,no,2,right,right_low,no,no-recurrence-events
9,40-49,ge40,40-44,15-17,yes,2,right,left_up,yes,no-recurrence-events
10,50-59,premeno,25-29,0-2,no,2,left,left_low,no,no-recurrence-events
11,60-69,ge40,15-19,0-2,no,2,right,left_up,no,no-recurrence-events
12,50-59,ge40,30-34,0-2,no,1,right,central,no,no-recurrence-events
13,50-59,ge40,25-29,0-2,no,2,right,left_up,no,no-recurrence-events
14,40-49,premeno,25-29,0-2,no,2,left,left_low,yes,recurrence-events
15,30-39,premeno,20-24,0-2,no,3,left,central,no,no-recurrence-events
16,50-59,premeno,2014-10-01 00:00:00,2019-05-03 00:00:00,no,1,right,left_up,no,no-recurrence-events
17,60-69,ge40,15-19,0-2,no,2,right,left_up,no,no-recurrence-events
18,50-59,premeno,40-44,0-2,no,2,left,left_up,no,no-recurrence-events
19,50-59,ge40,20-24,0-2,no,3,left,left_up,no,no-recurrence-events
20,50-59,lt40,20-24,0-2,?,1,left,left_low,no,recurrence-events
21,60-69,ge40,40-44,2019-05-03 00:00:00,no,2,right,left_up,yes,no-recurrence-events
22,50-59,ge40,15-19,0-2,no,2,right,left_low,no,no-recurrence-events
23,40-49,premeno,2014-10-01 00:00:00,0-2,no,1,right,left_up,no,no-recurrence-events
24,30-39,premeno,15-19,2019-08-06 00:00:00,yes,3,left,left_low,yes,recurrence-events
25,50-59,ge40,20-24,2019-05-03 00:00:00,yes,2,right,left_up,no,no-recurrence-events```

Your help would be much appreciated!
python pandas dataframe date datetime
2个回答
1
投票

这里是一种方法

df['inv-nodes'].str.extract('(\d{4})-(\d{2}-\d{2})')[1].fillna(df['tumor-size'])

0     15-19
1     15-19
2     35-39
3     35-39
4     30-34
5     25-29
6     40-44
7     10-01
8       0-4
9     40-44
10    25-29
11    15-19
12    30-34
13    25-29
14    25-29
15    20-24
16    10-01
17    15-19
18    40-44
19    20-24
20    20-24
21    40-44
22    15-19
23    10-01
24    15-19
25    20-24

0
投票
import re
import datetime 

s = "2014-10-01 00:00:00"

pattern = re.compile("\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}")

if pattern.match(s):
  d = datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
  print(f"{str(d.month).zfill(2)}-{str(d.day).zfill(2)}")

© www.soinside.com 2019 - 2024. All rights reserved.