import pandas as pd
df = pd.read_clipboard() # Your df here
tds = pd.to_timedelta(df["expiration"])
# 0 1 days 00:00:00
# 1 2 days 00:00:00
# 2 0 days 02:00:00
# Name: expiration, dtype: timedelta64[ns]
# I would recommend stopping here, but you can reformat this into a string of hours:
df["expiration"] = tds.dt.total_seconds().div(3600).apply("{:g}h".format)
# coupon expiration
# 0 Restaurant 24h
# 1 College 48h
# 2 CoffeeHouse 2h
4条答案
按热度按时间pxiryf3j1#
您可以使用
pd.to_timedelta
,但expiration列中的值必须是有效的timedelta字符串:41ik7eoe2#
您可以在
expiration
列上使用str.replace,并使用regex模式来选择那些带有day(d)后缀的条目,还可以调用repl
参数的函数-我选择在该参数中转换为hours。代码:
输出:
正则表达式模式:
^
:字符串的开始\d+
:一位或多位数字[0 - 9]d
:后跟字母d$
:字符串结束注:
如果你更喜欢使用lambda函数的一行程序:
wvmv3b1j3#
简单的Apply可以帮助您
2lpgd9684#
基于
eval
的另一种可能的解决方案是:输出: