Python 如何读取数据帧中以分钟/小时为单位的时间以获取销售率?
我有一个以小时为单位的数据框,例如14:59,其中60:00(最大值)是1(小时) 我尝试使用下面的代码读取此数据帧,但出现错误“只能使用带有datetimelike值的.dt访问器” 我希望在阅读了下面的日期后得到每分钟的销售率。 我的数据是Python 如何读取数据帧中以分钟/小时为单位的时间以获取销售率?,python,pandas,dataframe,time,Python,Pandas,Dataframe,Time,我有一个以小时为单位的数据框,例如14:59,其中60:00(最大值)是1(小时) 我尝试使用下面的代码读取此数据帧,但出现错误“只能使用带有datetimelike值的.dt访问器” 我希望在阅读了下面的日期后得到每分钟的销售率。 我的数据是 Name Sales Time Jame 603 14:59 Sam 903 34:00 Lee 756 34:55 有没有办法知道每分钟卖出多少 Name Sales Time Sale Rate Jame 603 14:5
Name Sales Time
Jame 603 14:59
Sam 903 34:00
Lee 756 34:55
有没有办法知道每分钟卖出多少
Name Sales Time Sale Rate
Jame 603 14:59 xxxx
Sam 903 34:00 yyyy
Lee 756 34:55 zzzz
请原谅xyz只是将其用作占位符。如果您在时间列中有datetime数据类型,则可以执行以下操作:
s = '''Name Sales Time
Jame 603 14:59
Sam 903 34:00
Lee 756 34:55'''
df = (pd.read_csv(io.StringIO(s),
sep='\s+',
converters={'Time':lambda x: pd.to_datetime(x, format='%M:%S')})
)
df['rate'] = df['Sales'] / (df['Time'].dt.minute + df['Time'].dt.second.div(60))
首先添加HH以将其转换为时间增量:
df['Time'] = '00:'+df['Time'].astype(str)
然后转换为timedelta
df['Time'] = pd.to_timedelta(df['Time'])
然后创建一个等于每分钟销售额的新列
df['Sales Rate'] = df['Sales'] / (df['Time'].dt.total_seconds()/60)
输出:
Sales Time Sales Rate
Jame 603 00:14:59 40.2447
Sam 903 00:34:00 26.5588
Lee 756 00:34:55 21.6516
df['time']=pd.to_timedelta(df['time'])我得到了预期的hh:mm:ss格式您是否添加了00:first我复制并粘贴了您的数据,因此如果您添加了00:first,应该可以工作,所以这是一个hh:mm:ss格式我想是的。我甚至试着制作df=k,其中k表示eg(00:37:12)的时间,然后我制作了k['time']=pd.to_timedelta(k['time'])。但是仍然得到错误“预期的hh:mm:ss格式”。顺便说一句,谢谢你。
Sales Time Sales Rate
Jame 603 00:14:59 40.2447
Sam 903 00:34:00 26.5588
Lee 756 00:34:55 21.6516