import re import pandas as pd jx=pd.read_excel("D:\MATLAB\附件1:123家有信贷记录企业的相关数据.xlsx",sheet_name='进项发票信息') jx1=jx.loc[jx['发票状态']=='有效发票'] jx1['开票日期'] = pd.to_datetime(jx1['开票日期']) 怎么依次提取 开票日期 中 2016年 到 2020年 中每一年出现的最小和最大的月份
时间: 2024-01-26 22:04:37 浏览: 109
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
要依次提取`jx1`中开票日期中201年到2020年中每一年出现的最小和最大的月份,你可以按年份进行分组后,使用`groupby`和`agg`函数来计算每个年份的最小和最大月份。
首先,确保`jx1['开票日期']`列已经被正确地解析为日期类型,你已经使用了`pd.to_datetime`方法进行转换。
接下来,你可以使用`dt.year`属性从日期中提取年份,并将其保存在新的列`年份`中:
```python
jx1['年份'] = jx1['开票日期'].dt.year
```
然后,你可以使用`groupby`函数按照`年份`列进行分组,并使用`agg`函数计算每个分组的最小和最大月份:
```python
result = jx1.groupby('年份')['开票日期'].agg(['min', 'max'])
```
最后,你可以打印出结果,其中包含每个年份的最小和最大月份:
```python
print(result)
```
完整的代码如下所示:
```python
import pandas as pd
jx = pd.read_excel("D:\MATLAB\附件1:123家有信贷记录企业的相关数据.xlsx", sheet_name='进项发票信息')
jx1 = jx.loc[jx['发票状态'] == '有效发票']
jx1['开票日期'] = pd.to_datetime(jx1['开票日期'])
jx1['年份'] = jx1['开票日期'].dt.year
result = jx1.groupby('年份')['开票日期'].agg(['min', 'max'])
print(result)
```
这样,你将获得每个年份的最小和最大月份的结果。请注意,这里假设`jx1['开票日期']`列已经被正确地解析为日期类型,如果在执行`pd.to_datetime`方法时遇到问题,请检查日期数据的格式是否正确,并做适当的调整。
阅读全文