在Python

时间:2016-11-03 23:50:01

标签: python parsing pandas time dataframe

我有一个Pandas DataFrame,其中包含一小时和分钟的时间字符串列(例如1小时8分钟)。一些细胞只有几分钟(例如47分钟)。 我试图将此格式转换为总分钟数的整数值(例如,1小时8分钟将是68分钟)。

我努力编写它但是我遇到了麻烦,因为我对Python比较新。 有没有能够帮助我的图书馆?

In [10]: df_times = pd.DataFrame(times)
         df_times.columns = ["times"]
         df_times
Out[10]:       times
        0      31 mins
        1      1 hour 28 mins
        2      1 hour 1 min
        3      1 min
        ...    ...
        22849  ERROR
        22850  7 mins


In [11]: (pd.to_timedelta(df_times["times"].str.replace('mins','min')).dt.total_seconds()//60).astype(int)
ValueError: unit abbreviation w/o a number

当我使用错误="强制":

In [12]: (pd.to_timedelta(df_times["times"].str.replace('mins','min'), errors="coerce").dt.total_seconds()//60).astype(int)
ValueError: Cannot convert NA to integer

1 个答案:

答案 0 :(得分:4)

您可以使用pandas.to_timedelta()Series.dt.total_seconds()方法:

In [244]: df
Out[244]:
                  time
0        1 hour 8 mins
1              47 mins
2  10 hours 12 minutes
3                1 min

In [245]: (pd.to_timedelta(df.time.str.replace('mins', 'min'))
     ...:    .dt.total_seconds()//60).astype(int)
     ...:
Out[245]:
0     68
1     47
2    612
3      1
Name: time, dtype: int32