Sac*_*chu 5 python lambda datetime dataframe pandas
我有一个从 Excel 读取的 DataFrame,其中包含 DateTime 类型的列之一。
sales_data=pandas.read_excel(r'Sample Sales Data.xlsx')
Run Code Online (Sandbox Code Playgroud)
我能够使用 str.extract/lambda 函数从其他列中提取子字符串。但我无法处理“订单日期”列
该命令sales_data['Order Date']给出以下输出
正如其他StackOverflow问题中所建议的那样,我尝试过
sales_data['Order Date'].apply(lambda x:x.str.slice())
Run Code Online (Sandbox Code Playgroud)
我收到错误: AttributeError: 'datetime.datetime' object has no attribute 'str' 要检查订单日期列的类型,我尝试了
sales_data['Order Date'].apply(lambda x:type(x))
Run Code Online (Sandbox Code Playgroud)
我得到了 datetime.datetime 类型
但是当我尝试日期时间操作时
sales_data['Order Date'].apply(lambda x:x.strftime("m"))
Run Code Online (Sandbox Code Playgroud)
我收到错误: AttributeError: 'int' object has no attribute 'strftime' 我收到了类似的命令错误
sales_data['Order Date'].apply(lambda x:x.dt.month)
Run Code Online (Sandbox Code Playgroud)
请建议一种方法,将日期时间对象中的月份提取到另一列中,而无需迭代数据帧。我无法对此列使用 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
Run Code Online (Sandbox Code Playgroud)
假设这个数据框:
>>> 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
Run Code Online (Sandbox Code Playgroud)