Python 将df.apply()与datetime.strtime一起使用的语法
考虑下表“df”:Python 将df.apply()与datetime.strtime一起使用的语法,python,pandas,datetime,Python,Pandas,Datetime,考虑下表“df”: date sales 0 2021-04-10 483 1 2022-02-03 226 2 2021-09-23 374 3 2021-10-17 186 4 2021-07-17 35 我想使用apply()和datetime.strtime()将当前为字符串的列日期转换为日期 我尝试了以下方法: format_date = "%Y-%m-%d" df["date_new"] = df.loc[:
date sales
0 2021-04-10 483
1 2022-02-03 226
2 2021-09-23 374
3 2021-10-17 186
4 2021-07-17 35
我想使用apply()
和datetime.strtime()
将当前为字符串的列日期转换为日期
我尝试了以下方法:
format_date = "%Y-%m-%d"
df["date_new"] = df.loc[:,"date"].apply(datetime.strptime,df.loc[:,"date"],format_date)
我有以下错误
级数的真值是模糊的。使用a.empty,a.bool(),
a、 item()、a.any()或a.all()
我尝试使用不同的语法(使用args
和**kwds
的apply()
参数,但我总是得到一个错误)
例如:
apply()只接受2个参数(给定3个)
有人能帮我解释一下语法吗?谢谢。您可以这样做:
df['date\u new']=df['date'].map(lambda日期字符串:datetime.strtime(日期字符串,格式字符串))
由于您仅在上操作,并且需要来自单个列的数据,因此应使用.map
而不是.apply
,这将立即提供整行/整列数据
如果必须使用“应用”:
df['date\u new']=df.apply(lambda行:datetime.strtime(行['date'],格式字符串),axis=1)
这里的键是axis=1,因此您可以按行进行操作,您可以执行以下操作:
df['date\u new']=df['date'].map(lambda日期字符串:datetime.strtime(日期字符串,格式字符串))
由于您仅在上操作,并且需要来自单个列的数据,因此应使用.map
而不是.apply
,这将立即提供整行/整列数据
如果必须使用“应用”:
df['date\u new']=df.apply(lambda行:datetime.strtime(行['date'],格式字符串),axis=1)
这里的键是
axis=1
,因此您可以按行操作您应该使用pd.to_datetime()
:
您应该使用
pd.to\u datetime()
:
如果您需要将字符串date转换为datetime,那么只需要df['date']=pd。要转换为datetime(df['date']),为什么要寻找简单的解决方案呢。。。非常感谢你!不过,您是否看到了将apply()和datetime.strtime()结合起来的方法?我仍然很想知道为什么它不起作用。@tusalue请看下面我关于您的问题的答案question@Tousalouest,为了使用strtime学习语法,您可以尝试df['date'].apply(lambda行:datetime.strtime(row,format_date))。虽然您也应该使用to_datetime,但不要认为这是重复的。OP特别询问“使用df.apply()和datetime.strtime的语法”,而不是“如何转换为日期格式”。这也适用于建议使用pd.to_datetime的答案。如果您需要将字符串date转换为datetime,您只需要df['date']=pd。to_datetime(df['date'])为什么要在困难重重的情况下寻找简单的解决方案。。。非常感谢你!不过,您是否看到了将apply()和datetime.strtime()结合起来的方法?我仍然很想知道为什么它不起作用。@tusalue请看下面我关于您的问题的答案question@Tousalouest,为了使用strtime学习语法,您可以尝试df['date'].apply(lambda行:datetime.strtime(row,format_date))。虽然您也应该使用to_datetime,但不要认为这是重复的。OP特别询问“使用df.apply()和datetime.strtime的语法”,而不是“如何转换为日期格式”。这也适用于建议使用pd.to_datetime的答案。不,你不应该。您应该使用
to_datetime
pandas方法。使用applymap不会更好,因为我在数据帧而不是序列中工作?@roganjosh同意,但是Tousalouest在评论中询问如何使用datetime.strpimeter实现函数apply
和applymap
作为python代码执行,因为您运行的是一个变量函数。其他内置的panda都是用C编写的,因此速度更快。您应该尽可能多地使用pandas内置(任何spark…scikit…numpy…等都是如此)来提高性能。:)@在应用程序中,applymap对数据帧中的每个元素进行操作,而apply沿着一个轴进行操作。您只希望使用1列中的信息,因此可以将其设置为一个系列(df['data'].map
),应用于每一行(myapply
示例),或假设数据帧的applymap(必须是df['date'].applymap
)不,您不应该这样做。您应该使用to_datetime
pandas方法。使用applymap不会更好,因为我在数据帧而不是序列中工作?@roganjosh同意,但是Tousalouest在评论中询问如何使用datetime.strpimeter实现函数apply
和applymap
作为python代码执行,因为您运行的是一个变量函数。其他内置的panda都是用C编写的,因此速度更快。您应该尽可能多地使用pandas内置(任何spark…scikit…numpy…等都是如此)来提高性能。:)@在应用程序中,applymap对数据帧中的每个元素进行操作,而apply沿着一个轴进行操作。您只想使用1列中的信息,因此可以将其设置为一个系列(df['data'].map
),应用于每一行(myapply
示例),或假设数据帧的applymap(必须是df['date'].applymap
)
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')