Python 使用Pandas重写此文件的较短方法是什么?

Python 使用Pandas重写此文件的较短方法是什么?,python,regex,pandas,dataframe,Python,Regex,Pandas,Dataframe,我用这些函数计算时间字符串的值(以秒为单位) 使用内置的pandas方法实现这一点的较短方法是什么 重新导入 输入数学 data=pd.DataFrame([“54分45秒”,“3小时12分钟”,“2小时7分钟”,“15分12秒”,“51分35秒]),列=[“匹配”]) def get_匹配(字符串、模式): 如果不是字符串!=字符串: 已找到=模式。搜索(字符串) 如果找到!=无: value=re.compile(“\d{1,}”).search(找到[0]) 返回int(值[0]) 返回0

我用这些函数计算时间字符串的值(以秒为单位)

使用内置的
pandas
方法实现这一点的较短方法是什么

重新导入
输入数学
data=pd.DataFrame([“54分45秒”,“3小时12分钟”,“2小时7分钟”,“15分12秒”,“51分35秒]),列=[“匹配”])
def get_匹配(字符串、模式):
如果不是字符串!=字符串:
已找到=模式。搜索(字符串)
如果找到!=无:
value=re.compile(“\d{1,}”).search(找到[0])
返回int(值[0])
返回0
def转换时间(col):
对于索引,列iteritems()中的行:
min\u p=re.compile(“\d{1,}\sminutes”)
sec_p=re.compile(“\d{1,}\s秒”)
hr\u p=re.compile(“\d{1,}\shours”)
mins=获取匹配(行,最小值)
秒=获取匹配(行,秒)
hrs=获取匹配(行,hr\p)
时间=分钟*60+秒+小时*60*60
col[索引]=时间
转换时间(数据[“匹配”])
数据标题()

我建议使用一个简单的helper函数,它可以一次提取三个时间分量
使用字典将其值以秒为单位映射到其等效值:

in_seconds = {'hours': 60 * 60, 'minutes': 60, 'seconds': 1}
sec = sum(int(num) * in_seconds[eq] for num, eq in re.findall(r'(\d+)\s?(hours|minutes|seconds)', "54 minutes 45 seconds"))
包装在函数中并使用
重新导入
def第(x)节:
in_seconds={'hours':60*60,'minutes':60,'seconds':1}
返回和(int(num)*num的单位秒[eq],关于findall(r'(\d+)\s)的单位秒[eq](小时|分钟|秒),x))
df.Matching=df.Matching.apply(秒)
使用
in_seconds={'hours':60*60,'minutes':60,'seconds':1}
df.Matching=df.Matching.str.findall(“(\d+)\s?(小时分秒)。应用(lambda x:sum(int(num)*in_秒[eq]表示num,eq表示x))

我建议使用一个简单的helper函数,它可以一次提取三个时间分量
使用字典将其值以秒为单位映射到其等效值:

in_seconds = {'hours': 60 * 60, 'minutes': 60, 'seconds': 1}
sec = sum(int(num) * in_seconds[eq] for num, eq in re.findall(r'(\d+)\s?(hours|minutes|seconds)', "54 minutes 45 seconds"))
包装在函数中并使用
重新导入
def第(x)节:
in_seconds={'hours':60*60,'minutes':60,'seconds':1}
返回和(int(num)*num的单位秒[eq],关于findall(r'(\d+)\s)的单位秒[eq](小时|分钟|秒),x))
df.Matching=df.Matching.apply(秒)
使用
in_seconds={'hours':60*60,'minutes':60,'seconds':1}
df.Matching=df.Matching.str.findall(“(\d+)\s?(小时分秒)。应用(lambda x:sum(int(num)*in_秒[eq]表示num,eq表示x))

我相信您可以使用一个正则表达式而不是多个正则表达式来获得结果。谢谢@Mandy8055。您能提供一个示例吗?请发布您的预期结果。使回答者更容易确保他们的结果匹配我相信您可以使用一个正则表达式而不是多个正则表达式来实现结果。谢谢@Mandy8055您能提供一个示例吗?请发布您的预期输出。让回答者更容易确保他们的结果匹配你做了困难的部分你做了困难的部分