python - 将 Datetime 列转换为 Pandas 中的 DatetimeIndex
问题描述
围绕将日期转换为日期时间索引有很多问题。我个人需要一个 datetimeindex 来使用需要 datetimeindex 的 Calmap 包。在遵循了许多 stackoverflow 指南之后,我无法将日期字段更改为 datetimeindex。以下是我采取的以下步骤。
import numpy as np
import pandas as pd
##I also attempted to add parse_dates=["Date'] and Index["Date"] to the pd.read_csv()
main_data = pd.read_csv('newoutput2.csv', delimiter=",", encoding='cp1252')
main_data = main_data.set_index(pd.to_datetime(main_data["Date"], format = "%m/%d/%y"))
import calmap
events = pd.Series(main_data.index)
calmap.yearplot(events, year=2020)
##When I run events[0] the output is
##Timestamp('2020-10-05 00:00:00')
运行该代码后我收到的错误是
python\python38-32\lib\site-packages\calmap\__init__.py in yearplot(data, year, how, vmin, vmax, cmap, fillcolor, linewidth, linecolor, daylabels, dayticks, monthlabels, monthticks, ax, **kwargs)
141 # Sample by day.
142 if _pandas_18:
--> 143 by_day = data.resample("D").agg(how)
144 else:
145 by_day = data.resample("D", how=how)
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'
无论我遵循哪种格式,它似乎都不会从数据中创建日期时间索引。
数据在这里
原始数据
Name Time Date
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
FName LName 12:00PM 10/5/20
如果我打印 main_data,它看起来像这样
Name Time Date
Date
2020-10-05 FName LName 12:00:00 10/5/20
2020-10-05 FName LName 12:00:00 10/5/20
2020-10-05 FName LName 12:00:00 10/5/20
2020-10-05 FName LName 12:00:00 10/5/20
2020-10-05 FName LName 12:00:00 10/5/20
解决方案
在设置索引之前尝试连接日期和时间。Use df.column.str.cat(colum1, sep=' ')
打印(df)
Name Time Date
0 FName LName 12:00PM 10/5/20
1 FName LName 12:00PM 10/5/20
2 FName LName 12:00PM 10/5/20
3 FName LName 12:00PM 10/5/20
4 FName LName 12:00PM 10/5/20
5 FName LName 12:00PM 10/5/20
6 FName LName 12:00PM 10/5/20
df['datetime']=pd.to_datetime(df['Date'].str.cat(df.Time, sep=' '))
df.set_index(df['datetime'], inplace=True)
print(df)
Name Time Date datetime
datetime
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
2020-10-05 12:00:00 FName LName 12:00PM 10/5/20 2020-10-05 12:00:00
推荐阅读
- javascript - 使用 JavaScript 如何从 nodejs 覆盖预先存在的 csv 文件中的二维数组
- visualization - 如何将多个 xml-vtk 文件(vtu、vti)组合成一个以获得动画?
- angular - 无法验证 Angular 12 中的表单
- vue.js - vue i18n 无法从语言环境加载翻译
- html - Html Css表格格式合并行
- swift - 在 WebView Swift 5 中拉动刷新
- debugging - 从 Lua 运行 ZeroBrane
- javascript - 在数组上的映射中返回许多 .appendChild()
- ios - SwiftUI:ObservedObject 更新后的动画列表
- python-multiprocessing - ubuntu和centOS之间的Python多处理