Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何读取数据帧中以分钟/小时为单位的时间以获取销售率?_Python_Pandas_Dataframe_Time - Fatal编程技术网

Python 如何读取数据帧中以分钟/小时为单位的时间以获取销售率?

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

我有一个以小时为单位的数据框,例如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: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