teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Update

2022/01/09 01:32

投稿

melian
melian

スコア21265

answer CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  df = pd.read_csv('01.csv')
6
6
 
7
+ # print(df['Time'].str.extract(r'((\d+)([dhm]))?\s*((\d+)([dhm]))?\s*((\d+)([dhm]))').fillna(0))
8
+
7
9
  sec = {'d': 86400, 'h': 3600, 'm': 60, 0: 0}
8
10
  df['Time(second)'] = (
9
11
  df['Time'].str

1

Update

2022/01/09 01:32

投稿

melian
melian

スコア21265

answer CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  df = pd.read_csv('01.csv')
6
6
 
7
+ sec = {'d': 86400, 'h': 3600, 'm': 60, 0: 0}
7
8
  df['Time(second)'] = (
8
9
  df['Time'].str
9
- .extract(r'((\d+)d)?\s*((\d+)h)?\s*((\d+)m)?')
10
+ .extract(r'((\d+)([dhm]))?\s*((\d+)([dhm]))?\s*((\d+)([dhm]))')
10
- .fillna(0).astype({1: int, 3: int, 5: int})
11
+ .fillna(0).astype({1: int, 4: int, 7: int})
12
+ .apply(lambda x:
11
- .apply(lambda x: x[1]*86400 + x[3]*3600 + x[5]*60, axis=1))
13
+ x[1]*sec[x[2]] + x[4]*sec[x[5]] + x[7]*sec[x[8]], axis=1))
12
14
 
13
15
  print(df)
14
16
 
@@ -18,6 +20,6 @@
18
20
  1 15d 2h 5m 1303500
19
21
  2 20d 12h 1771200
20
22
  3 50m 3000
21
- 4 11h 22d 39600
23
+ 4 11h 22d 1940400
22
24
  5 30d 11h 3m 2631780
23
25
  ```