我已经查阅了很多以前的相关SO帖子,但是我无法适应它们来解决我的问题。
这是一个示例数据框。
# Using pandas 0.24.2
data = {'customer_id': [1, 2, 3],
'prev_due_date':['Jun-2010', 'Apr-2019', 'Dec-1999'],
'current_due_date':['Aug-2019', 'Dec-2045', 'Jan-2000'],
'next_due_date':['Feb-2025', 'Nov-2065', 'Sep-2001']
}
df = pd.DataFrame(data)
这是数据框的外观,在实际数据框中还有更多此类列要解析,因此是我的问题。
customer_id prev_due_date current_due_date next_due_date
0 1 Jun-2010 Aug-2019 Feb-2025
1 2 Apr-2019 Dec-2045 Nov-2065
2 3 Dec-1999 Jan-2000 Sep-2001
我创建了一个解析一列的函数(即,这将为提供的df添加两个已解析的列---月和年列---)
def parse_column(df, col_parse):
col_parse_mmm = col_parse + '_mmm'
col_parse_yyyy = col_parse + '_yyyy'
df[[col_parse_mmm, col_parse_yyyy]] = df[col_parse].str.split('-', expand=True)
return df
在下面调用此函数可以完成提供的列的工作:
parse_column(df, 'prev_due_date')
现在,我的问题是:
如何使用 apply 对我选择的任意数量的列(例如,要解析的数十或数百列的列表)执行此操作strong>?
是否可以避免使用 apply ?
答案 0 :(得分:1)
for c in df.columns:
if c.endswith('_date'):
parse_column(df, c)
(您无需在parse_column函数中返回df)
如果您已经有了感兴趣的列名列表:
for c in my_columns_list:
parse_column(df, c)
您不需要任何apply
。