python - 从 Pandas Datetime Excel DateOffset 中剥离时间
问题描述
所以我导入了一个具有“DT RECD”字段的 excel 表,该字段将日期格式化为 mm/dd/yy,这是 excel 表中的第 7 列,我像这样导入我的数据:
import datetime
import pandas as pd
excel_workbook = 'ExcelSheet.xlsx'
sheet1 = pd.read_excel(excel_workbook,
sheet_name='Sheet1',
keep_default_na= False,
index_col=0,
parse_dates=['DT RECD'])
sheet1['DT RECD'] = pd.to_datetime(sheet1['DT RECD'])
当我打印数据时,它看起来像这样,这非常适合我需要做的事情。
DT RECD LOT Number FNISH
2008-07-23 471359 AL
2018-05-18 71378301 CR
2018-05-18 713787 CR
2018-11-09 74219202 CR
然后我需要在日期“1 年和超过 2 年标记”“2 年和超过 3 年标记”等日期过滤这些数据。所以我为今天和 1,2,3,4,.. 年创建了我的日期,并像这样从 pandas 中应用一个偏移量:
today = datetime.date.today()
oneYear = today - pd.DateOffset(years=1)
#oneYear = today - datetime.timedelta(years=1) <- did not work
twoYear = today - pd.DateOffset(years=2)
现在这是我的日期中有 00:00:00 的问题
2021-03-03
2020-03-03 00:00:00
2019-03-03 00:00:00
我正在尝试获取第一年和第二年之间的数据并发布到新表中,如下所示:
YearOne = sheet1[sheet1['DT RECD'].between(oneYear, twoYear)]
当我打印 YearOne 时,我得到一个空数据集 - 如果我打印 sheet1 数据就在那里,这是“index_col = 0”。
Empty DataFrame
Columns: [...,THICKNESS,...,DT RECD,
Index: []
我不知道如何提取一两年的数据。
这也是我写回excel的方式
writer = pd.ExcelWriter('ExcelSheet.xlsx', mode='a', engine='openpyxl')
YearOne.to_excel(writer, '1 Year')
当我设置 Index_col=7 这是“DT RECD”列时,我得到一个错误:
sheet1 = pd.read_excel(excel_workbook,
sheet_name='Sheet1',
keep_default_na= False,
index_col=7,
parse_dates=['DT RECD'])
我收到此错误:
Traceback (most recent call last):
File "...\site-packages\pandas\core\indexes\base.py", line 3080, in get_loc
return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 4554, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 4562, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'DT RECD'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\steven\PycharmProjects\Test\venv\Foreach Loop Panda.py", line 11, in <module>
sheet1['DT RECD'] = pd.to_datetime(sheet1['DT RECD'])
File "C:\Users\steven\PycharmProjects\Test\venv\lib\site-packages\pandas\core\frame.py", line 3024, in __getitem__
indexer = self.columns.get_loc(key)
File "C:\Users\steven\PycharmProjects\Test\venv\lib\site-packages\pandas\core\indexes\base.py", line 3082, in get_loc
raise KeyError(key) from err
KeyError: 'DT RECD'
如果 Index_col=0 我没有收到错误,但在尝试获取 2 年之间的数据时“YearOne”数据中没有数据。
解决方案
推荐阅读
- java - 如何获取存储在 android studio 的 firebase 实时数据库中的新密码
- windows - cURL 无法识别命令行参数 (Windows 10)
- pyspark - 在 PysSpark 中将字符串类型(2021 年 6 月 22 日下午 1:04)转换为“MMM d,yyyy hh:mm:ss a”类型的时间戳
- gradle - Gradle 4 升级复杂 task.execute() 替换
- python - 我正在尝试更改 Dash 应用程序的布局
- python - 使用 xml.etree.ElementTree 内容从我的 XML 中消失
- angular - 未根据 ngFor 循环中的状态检查复选框
- c++ - 嵌套命名空间c ++中的大数组
- tensorflow - 为什么机器学习训练在一个 gpu 上失败但在另一个 gpu 上运行?
- python - 在 sklearn 模型上调用 .fit() 时的 SettingWithCopyWarning