首页 > 解决方案 > 使用 pd.Dataframe.replace 和 apply 函数作为替换值

问题描述

我有几个数据框在某些列中混合了这种 ASP.NET 格式“/Date(1239018869048)/”的日期。我已经想出了如何将其解析为给定列的 python 日期时间格式。但是,我想将此逻辑放入一个函数中,以便我可以将任何数据帧传递给它,并让它使用 pd.Dataframe.replace 替换它找到的与正则表达式匹配的所有日期。

就像是:

def pretty_dates():
    #Messy logic here

df.replace(to_replace=r'\/Date(d+)', value=pretty_dates(df), regex=True)

问题在于传递给 pretty_dates 的 df 是整个数据框,而不仅仅是需要替换的单元格。

因此,我试图弄清楚的概念是,是否有一种方法可以使使用 df.replace 时应该替换的值可以是函数而不是静态值。

非常感谢你提前

编辑 为了增加一些清晰度,我在数据框中有很多列,超过一百个包含这种日期格式。我不想列出每个有日期的列。有没有办法在我的数据集中的所有列中应用清理我的日期的函数?所以我不想清理 1 列,而是我的数据框的所有数百列。

标签: pythonpandasdataframe

解决方案


我确定您可以使用正则表达式一步完成此操作,但这里是如何一次将其应用于整个列:

df = pd.Series(['/Date(1239018869048)/',
                '/Date(1239018869048)/'],dtype=str)

df = df.str.replace('\/Date\(', '')
df = df.str.replace('\)\/', '')
print(df)

    0    1239018869048
    1    1239018869048
    dtype: object


推荐阅读