You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Pandas的apply方法返回函数而非值?

问题解析:为什么Pandas的apply返回函数对象而非日期值?

嘿,这个问题其实挺典型的——你写的lambda表达式没有真正调用pd.to_datetime函数,只是把函数本身返回了,所以才会得到一堆函数对象,而不是转换后的日期数据。

咱们拆解下你的代码:

testdf.apply(lambda x: pd.to_datetime, axis=0)

这里的lambda x: pd.to_datetime意思是:“接收参数x,然后返回pd.to_datetime这个函数本身”,而不是“用x作为参数调用pd.to_datetime”。所以每一列传入lambda后,返回的都是函数对象,自然不会得到日期值。

怎么修复?有几种简单的方式:

1. 直接把函数传给apply(最简洁)

apply会自动把每一列(因为axis=0)作为参数传递给pd.to_datetime,所以直接写函数名就行:

testdf.apply(pd.to_datetime, axis=0)

2. 在lambda里真正调用函数

如果一定要用lambda,记得给pd.to_datetime加上括号,把x传进去:

testdf.apply(lambda x: pd.to_datetime(x), axis=0)

3. 更高效的写法:跳过apply直接转换

其实对于日期转换,完全不需要用apply,直接对列或者整个DataFrame操作更高效:

# 单列转换
testdf['date_col_1'] = pd.to_datetime(testdf['date_col_1'])
testdf['date_col_2'] = pd.to_datetime(testdf['date_col_2'])

# 全列一次性转换
testdf = pd.to_datetime(testdf.stack()).unstack()

这样处理后,你的DataFrame里的列就会变成datetime64类型啦。

内容的提问来源于stack exchange,提问作者muon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:16:35