python - 列表理解熊猫作业
问题描述
如何使用列表理解或任何其他技术来重构我拥有的代码?我正在处理 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,只是因为它会增加行数
解决方案
我认为需要简单地循环,特别是如果想要避免应用和许多列:
cols = ['start_d','end_d']
for c in cols:
df[c] = pd.to_datetime(df[c],errors='coerce').dt.strftime('%Y-%b-%d')
如果需要list comprehension
,concat
因为结果是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')
推荐阅读
- javascript - 计算器 - 点击按钮不起作用
- workspace - 在开发工作区中创建的挂起变更集出现在发布工作区中
- performance - 离子标签的性能问题
- scala - 在 scala intellij IDE 中加载文件
- apache-kafka - 当我退回代理时,Apache Kafka 失去了一些消费者补偿
- javascript - Woocommerce 3 中的自定义加减数量按钮
- jquery - selected() 用于使用 jquery load() 加载的动态内容
- extjs - ExtJS 6.6.0 现代工具包 MultiSlider
- javascript - 如何用 chai 断言 css 属性
- php - 控制器“JMS\TranslationBundle\Controller\TranslateController”具有必需的构造函数参数并且容器中不存在