【问题标题】:Remove the decimal value in min and sec in pandas删除 pandas 中 min 和 sec 中的十进制值
【发布时间】:2020-02-27 10:53:45
【问题描述】:

我有一个数据框

dict1={'time' : ['2 min 19 sec','2 min 43 sec','1 min 33 sec','32 sec','40 sec','22 sec','2.3 
sec','3.2 min 13 sec','4.9 min 7.6 sec']}
df=pd.DataFrame(dict1)
df


    time
0   2 min 19 sec
1   2 min 43 sec
2   1 min 33 sec
3   32 sec
4   40 sec
5   22 sec
6   2.3 sec
7   3.2 min 13 sec
8   4.9 min 7.6 sec

我需要按如下方式生成输出,以便将 min 的十进制值添加到 sec 并删除 sec 的十进制值

        time
0   2 min 19 sec
1   2 min 43 sec
2   1 min 33 sec
3   0 min 32 sec
4   0 min 40 sec
5   0 min 22 sec
6   0 min 2 sec
7   3 min 15 sec
8   4 min 16 sec

【问题讨论】:

    标签: python pandas dataframe time row


    【解决方案1】:

    尝试使用带有正则表达式模式的Series.str.extract 来提取数值。

    将分钟的小数部分添加到秒,然后使用列表推导来格式化所需的结果:

    vals = df['time'].str.extract('^(?:(\S+?) min )?(\S+?) sec').fillna(0).astype(float)
    vals[1] += vals[0].mod(1).mul(10)
    
    df['time_corrected'] = [f'{int(m)} min {int(s)} sec' for m, s in vals.apply(tuple, axis=1)]
    

    [出]

                  time time_corrected
    0     2 min 19 sec   2 min 19 sec
    1     2 min 43 sec   2 min 43 sec
    2     1 min 33 sec   1 min 33 sec
    3           32 sec   0 min 32 sec
    4           40 sec   0 min 40 sec
    5           22 sec   0 min 22 sec
    6          2.3 sec    0 min 2 sec
    7   3.2 min 13 sec   3 min 15 sec
    8  4.9 min 7.6 sec   4 min 16 sec
    

    【讨论】:

    • 我已经编辑了这个问题。任何想法如何进行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多