python - 从 pandas DataFrame 中的日期时间列中提取月份

标签 python pandas dataframe datetime lambda

我有一个从 Excel 读取的 DataFrame,其中一列的类型为 DateTime。

sales_data=pandas.read_excel(r'Sample Sales Data.xlsx')

我能够使用 str.extract/lambda 函数从其他列中提取子字符串。但是我无法处理“订单日期”栏

命令 sales_data['Order Date'] 给出以下输出

enter image description here

按照 other 中的建议计算器 questions , 我试过

sales_data['Order Date'].apply(lambda x:x.str.slice())

我收到一个错误:AttributeError: 'datetime.datetime' object has no attribute 'str' 为了检查订单日期列的类型,我尝试了

sales_data['Order Date'].apply(lambda x:type(x))

我得到类型 datetime.datetime enter image description here 但是当我尝试 datetime 操作时

sales_data['Order Date'].apply(lambda x:x.strftime("m"))

我收到错误:AttributeError: 'int' object has no attribute 'strftime' 我得到了类似的命令错误

sales_data['Order Date'].apply(lambda x:x.dt.month)

请提出一种无需遍历 DataFrame 即可将日期时间对象中的月份提取到另一列中的方法。我无法对该列使用 datetime 或 int 函数,因为它同时作为 datetime 和 int 列。

最佳答案

使用dt访问器:

sales_data=pandas.read_excel(r'Sample Sales Data.xlsx', parse_dates=['Order Date'])
sales_data['Order Date'].dt.month

假设这个数据框:

>>> sales_data
            Order Date
0  2016-01-01 00:00:00
1  2016-03-28 22:00:00

>>> sales_data['month'] = sales_data['Order Date'].dt.month
>>> sales_data
           Order Date  month
0 2016-01-01 00:00:00      1
1 2016-03-28 22:00:00      3

关于python - 从 pandas DataFrame 中的日期时间列中提取月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69375868/

相关文章:

python - django表单下拉数字列表

python - 切片数据框

python - Pandas 切割无限上/下界

python - PySpark:在日期为字符串的范围内按日期字段过滤 DataFrame

python - 如何使用 pandas 读取文本文件键、值对?

python - Pandas groupby 按特定标签获取总行的百分比

python - 我要给空间连同值(value)

python - Google App Engine : How to do queries interact when they execute a function decorated by ndb. 事务

python - 来自表示 RGB 图像的 float 组的初始 CV::MAT

python - 让函数在数据帧的每一行上工作(pandas)