【发布时间】:2019-03-08 03:17:20
【问题描述】:
解决方案更新:从上面提供的链接,这是我想出的:
import pandas as pd
import numpy as np
df = pd.read_csv('Book1.csv')
df = df.set_index(pd.DatetimeIndex(df['Duration']))
idx = pd.DatetimeIndex(df['Duration'])
df['Duration_Decimal'] = idx.hour + idx.minute / 60
文件开始:
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
from datetime import datetime
df = pd.read_excel('Book1.xlsx', sheet_name='Sheet1')
这是我要转换的列:
In: df.Duration.head()
Out: 0 01:30:00
1 00:00:00
2 00:30:00
3 00:30:00
4 00:00:00
Name: Duration, dtype: object
还有我做的功能:
def conversion_function(t):
(h, m, s) = t.split(':')
return int(h) + int(m)/60 + int(s)
测试功能:
In: conversion_function('01:30:00')
Out: 1.5
向数据框插入新列 (Duration_2) 并执行转换函数(带有 AttributeError):
df['Duration_2'] = df['Duration'].apply(conversion_function)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-ad23f30d9b5a> in <module>()
----> 1 df['Duration_2'] = df['Duration'].apply(conversion_function)
D:\Python\lib\site-packages\pandas\core\series.py in apply(self, func,
convert_dtype, args, **kwds)
3190 else:
3191 values = self.astype(object).values
-> 3192 mapped = lib.map_infer(values, f,
convert=convert_dtype)
3193
3194 if len(mapped) and isinstance(mapped[0], Series):
pandas/_libs/src\inference.pyx in pandas._libs.lib.map_infer()
<ipython-input-3-d662e6fcae47> in conversion_function(t)
1 def conversion_function(t):
----> 2 (h, m, s) = t.split(':')
3 return int(h) + int(m)/60 + int(s)
AttributeError: 'datetime.time' object has no attribute 'split'
当我单独使用该功能时,它可以工作,但无论我尝试如何调整它,我似乎只是让它在数据框中工作。
【问题讨论】: