在資料框中,其中一列是持續時間。它是作為字串給出的。
index duration
1 1 hour, 2 minutes, 21 seconds
2 1 hour, 2 minutes, 26 seconds
3 1 hour, 2 minutes, 41 seconds
4 1 hour, 4 minutes, 39 seconds
5 1 hour, 42 seconds
6 6 minutes, 7 seconds
7 9 minutes, 7 seconds
8 9 minutes, 9 seconds
9 9 minutes, 9 seconds
10 9 minutes, 9 seconds
如何將此列轉換為秒?
uj5u.com熱心網友回復:
用于pd.Timedelta決議每個專案:
df['duration'] = df['duration'].apply(pd.Timedelta).dt.total_seconds().astype(int)
輸出:
>>> df
duration
0 3741
1 3746
2 3761
3 3879
4 3642
5 367
6 547
7 549
8 549
9 549
uj5u.com熱心網友回復:
這是一種解決方案:
import pandas as pd
def convert_str_to_seconds(string) -> int:
l = string.split(', ')
total_seconds = 0
for i in l:
num_value = int(i.split(' ')[0])
if 'hour' in i:
total_seconds = num_value * 3600
elif 'minute' in i:
total_seconds = num_value * 60
elif 'second' in i:
total_seconds = num_value
return total_seconds
df = pd.DataFrame()
l = ['1 hour, 2 minutes, 21 seconds',
'1 hour, 2 minutes, 26 seconds',
'1 hour, 2 minutes, 41 seconds',
'9 minutes, 7 seconds',
'31 seconds']
df['duration'] = l
print(df)
df['duration'] = [convert_str_to_seconds(cell) for cell in df['duration']]
print(df)
輸出:
duration
0 1 hour, 2 minutes, 21 seconds
1 1 hour, 2 minutes, 26 seconds
2 1 hour, 2 minutes, 41 seconds
3 9 minutes, 7 seconds
4 31 seconds
duration
0 3741
1 3746
2 3761
3 547
4 31
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487174.html
