Python 如何将数据帧日期转换为浮点数?
我正在尝试使用pandas从电子表格导入数据框,然后对其列执行numpy操作。问题是我获得了标题中指定的错误:TypeError:Cannot do in place boolean setting(不能对具有非np.nan值的混合类型进行内置布尔设置)。 原因是我的dataframe包含一个带有日期的列,如:Python 如何将数据帧日期转换为浮点数?,python,pandas,numpy,dataframe,xlrd,Python,Pandas,Numpy,Dataframe,Xlrd,我正在尝试使用pandas从电子表格导入数据框,然后对其列执行numpy操作。问题是我获得了标题中指定的错误:TypeError:Cannot do in place boolean setting(不能对具有非np.nan值的混合类型进行内置布尔设置)。 原因是我的dataframe包含一个带有日期的列,如: ID Date 519457 25/02/2020 10:03 519462 25/02/2020 10:07 519
ID Date
519457 25/02/2020 10:03
519462 25/02/2020 10:07
519468 25/02/2020 10:12
... ...
Numpy要求格式为浮点数,因此:
ID Date
519457 43886.41875
519462 43886.42153
519468 43886.425
... ...
如何在不修改电子表格本身的情况下进行此更改?
我在论坛上看到了很多帖子,询问、询问,并阅读了上面的文档,但没有做到这一点,这似乎很简单。
我相信这类问题以前已经解决过,但现在还没有找到类似的职位
我使用的代码如下
xls=pd.ExcelFiler'/home/../TwoData.xlsx'
xls.sheet_名称
df=pd.读数,Hoja 1
df[E_t]=df[Date].diff
任何帮助或指点都将不胜感激
另外,我见过一些解决方案需要计算想要获得的确切数字,但由于数据帧的大小,在这种情况下这是不可能的。我认为您需要:
#https://stackoverflow.com/a/9574948/2901002
@rewritten to vectorized solution
def excel_date(date1):
temp = pd.Timestamp(1899, 12, 30) # Note, not 31st Dec but 30th!
delta = date1 - temp
return (delta.dt.days) + (delta.dt.seconds) / 86400
df["Date"] = pd.to_datetime(df["Date"]).pipe(excel_date)
print (df)
ID Date
0 519457 43886.418750
1 519462 43886.421528
2 519468 43886.425000
我认为你需要:
#https://stackoverflow.com/a/9574948/2901002
@rewritten to vectorized solution
def excel_date(date1):
temp = pd.Timestamp(1899, 12, 30) # Note, not 31st Dec but 30th!
delta = date1 - temp
return (delta.dt.days) + (delta.dt.seconds) / 86400
df["Date"] = pd.to_datetime(df["Date"]).pipe(excel_date)
print (df)
ID Date
0 519457 43886.418750
1 519462 43886.421528
2 519468 43886.425000
您可以将日期转换为Unix时间戳。在python中,如果您有一个UTC格式的datetime对象,则可以使用时间戳来获取UTC时间戳。此函数返回datetime对象自历元以来的时间 请参见下面的示例-
from datetime import timezone
dt = datetime(2015, 10, 19)
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
print(timestamp)
1445212800.0
有关更多信息,请查看模块。您可以将日期转换为Unix时间戳。在python中,如果您有一个UTC格式的datetime对象,则可以使用时间戳来获取UTC时间戳。此函数返回datetime对象自历元以来的时间 请参见下面的示例-
from datetime import timezone
dt = datetime(2015, 10, 19)
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
print(timestamp)
1445212800.0
请检查模块以了解更多信息。我继续获得相同的错误消息。文档似乎表明需要“%f”的实例,但不确定如何实现它。文件中的第15行是:df[pd.isnulldf]=0@enricw-所以需要用没有日期时间替换所有列中缺少的值吗?@enricw-现在可以测试吗?我继续获得相同的错误消息。文档似乎表明需要“%f”的实例,但不确定如何实现它。文件中的第15行是:df[pd.isnulldf]=0@enricw-所以需要在没有日期时间的所有列中替换缺少的值吗?@enricw-您现在可以测试吗?