我有一个数据框,它的小时数以分钟为单位,例如 14:59,其中 60:00(最大值(是 1(小时(。
我尝试使用以下代码读取此数据帧,但出现错误"只能将 .dt 访问器与类似日期时间的值一起使用"
df['time sold'].dt.minute
我希望在阅读下面的日期后获得每分钟的销售率。 我的数据是
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 只是将它们用作占位符。
首先添加 HH 以便能够将其转换为熊猫时间增量:
df['Time'] = '00:'+df['Time'].astype(str)
然后转换为时间增量
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
如果在时间列中有日期时间 dtype,则可以执行以下操作:
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))