python - 如何使用正则表达式转换 Pandas 中的转换列

标签 python regex pandas dataframe eval

我有一个 time column像这样:

df = pd.DataFrame({'time': {0: '1 h 50 min', 1: '50 min', 2: '2 h 3 min', 3: '3 min'}})
        time
0  1 h 50 min
1      50 min
2   2 h 3 min
3       3 min
我想要几秒钟的信息,例如:
time
6600
3000
7380
180
我试图使用 regexeval以秒为单位评估时间但没有成功实现这一目标的最佳方法是什么?

最佳答案

先用regex得到小时和分钟,然后将两者都转换为分钟并计算总和,最后将结果乘以 60 得到秒。

df['time'].str.findall('(\d+)\s*(h|min)').apply(lambda x: sum(int(t)*60 if u=='h' else int(t) for t,u in x))*60
输出:
0    6600
1    3000
2    7380
3     180
Name: time, dtype: int64
如果你愿意,你可以有单独的小时和分钟列:
out = df.assign(hours=df['time'].str.extract('(\d+)\s*h'),
          minutes=df['time'].str.extract('(\d+)\s*min')).fillna(0)

         time hours minutes
0  1 h 50 min     1      50
1      50 min     0      50
2   2 h 3 min     2       3
3       3 min     0       3
现在,您可以将它们转换为整数并获取秒数:
out['hours'].astype(int)*3600+out['minutes'].astype(int)*60

0    6600
1    3000
2    7380
3     180
dtype: int32

关于python - 如何使用正则表达式转换 Pandas 中的转换列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68110951/

相关文章:

php - PHP中的preg_replace按组

python - Gtk 笔记本选项卡大小

java - 匹配正则表达式中从后面开始的第一次出现

regex - Perl 包含匹配变量的替换字符串的安全插值

python - 将 Pandas 堆积的 DataFrame 转换为 Matrix

python - 每年用 Pandas 绘制箱线图

python - 在 python 中创建成对元素列表

python - 在python,numpy中创建一个充满零的4d矩阵

android - 尝试在 Linux Ubuntu 上使用 Android systrace.py 时出错

python - 如何从字典创建不同的数据框