python - 在熊猫中编辑日期以仅按列显示年份
问题描述
我试图了解如何使用 pandas 在 python 中编辑数据框,以便删除除年份之外的所有内容。
示例:如果日期是 2014-01-01,我希望它显示 2014 并删除月份和日期。所有日期都在一个列中。
谢谢指教!
解决方案
您可以将numpy.datetime64
日期值转换为datetime
使用pd.to_datetime()
,然后您可以从中提取年份或月份或日期。
import numpy as np
date = np.datetime64('2014-01-01')
type(date)
输出:
numpy.datetime64
使用 . 将此日期转换为 pandas 日期时间pd.to_datetime
。
date = pd.to_datetime(date)
type(date)
输出:
pandas._libs.tslibs.timestamps.Timestamp
然后您可以使用.year
date.year提取年份
输出:
2014
所以,如果你有一个df:
df = pd.DataFrame({'date': [np.datetime64('2014-01-01'), np.datetime64('2015-01-01'), np.datetime64('2016-01-01')]})
df['date'] = pd.DatetimeIndex(df['date']).year
df
输出:
date
0 2014
1 2015
2 2016
或者,您也可以这样做
df = pd.DataFrame({'date': [np.datetime64('2014-01-01'), np.datetime64('2015-01-01'), np.datetime64('2016-01-01')]})
df['date'] = df['date'].apply(lambda x: x.strftime('%Y'))
df
输出:
date
0 2014
1 2015
2 2016
编辑 1
当列具有日期值时使用年份分组
df = pd.DataFrame({'date': [np.datetime64('2014-01-01'), np.datetime64('2015-01-01'), np.datetime64('2016-01-01')]})
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
df.groupby(df.index.year).size()
输出:
date
2014 1
2015 1
2016 1
即使您从日期中删除了月份和日期并且您的列中只有年份,您仍然可以执行相同的操作
df = pd.DataFrame({'date': [np.datetime64('2014-01-01'), np.datetime64('2015-01-01'), np.datetime64('2016-01-01')]})
df['date'] = pd.DatetimeIndex(df['date']).year
df.groupby('date').size()
输出:
date
2014 1
2015 1
2016 1
推荐阅读
- cordova - Ionic 4 Native 离线数据存储和网络恢复时同步,即使应用程序关闭
- spring-boot - 带有 kafka 流的 Spring Boot 应用程序
- java - 关于 JAVA 多线程,这个发布者订阅者程序是否正确?
- ios - UIAlert 在 iOS Swift 中显示两次?
- python-3.x - django相关对象引用不显示项目
- python - 无法在 Python3 中使用 exec() 函数将字符串转换为整数
- reactjs - inputRef 的类型 - TypeScript
- r - R 3.6 闪亮问题“静态路径不能有斜杠。”
- reactjs - 为什么 Firefox 上的 React 热重载会自动打开调试器?
- shopify - Shopify App Billing API:如何提供多个计费计划?