首页 > 解决方案 > 列表理解熊猫作业

问题描述

如何使用列表理解或任何其他技术来重构我拥有的代码?我正在处理 DataFrame,在第一个示例中修改值,并在第二个示例中添加新列。

示例 1

df['start_d'] = pd.to_datetime(df['start_d'],errors='coerce').dt.strftime('%Y-%b-%d')
df['end_d'] = pd.to_datetime(df['end_d'],errors='coerce').dt.strftime('%Y-%b-%d')

示例 2

df['col1']  = 'NA'
df['col2'] = 'NA'

我宁愿避免使用apply,只是因为它会增加行数

标签: pythonpandasoptimizationrefactoring

解决方案


我认为需要简单地循环,特别是如果想要避免应用和许多列:

cols = ['start_d','end_d']

for c in cols:
    df[c] = pd.to_datetime(df[c],errors='coerce').dt.strftime('%Y-%b-%d')

如果需要list comprehensionconcat因为结果是list of Series

comp = [pd.to_datetime(df[c],errors='coerce').dt.strftime('%Y-%b-%d') for c in cols]
df = pd.concat(comp, axis=1)

但这里仍然是可能的解决方案apply

df[cols]=df[cols].apply(lambda x: pd.to_datetime(x ,errors='coerce')).dt.strftime('%Y-%b-%d')

推荐阅读