我有大量的数据,我想实现以下操作,但需要花费太多的时间。我如何优化它?

2024-09-30 06:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一组数据,需要在400.000行之前清理一下

要采取的两项行动: -转售发票月份是字符串M201705,我想创建一个名为 Year在这种情况下只有年份2017

  • 一些同样是字符串的商业产品以TR结尾,我想从这些产品中删除TR。例如M23065TR我想在M23065中更改这种情况下的所有产品,但是在列中还有一些产品名称已经很好了M340767 下面是我的代码,它需要超过2h才能运行,您是否有一个解决方案来简化它以减少时间。 多谢各位
for i in range(Ndata.shape[0]):
    Ndata.loc[i,'Year']=Ndata.loc[i,'Resale Invoice Month'][1:5]
    if (Ndata['Commercial Product Code'][i][-2:]=='TR')==True:
        Ndata.loc[i,'Commercial Product Code']=Ndata.loc[i,'Commercial Product Code'][:-2]

Tags: 数据字符串产品情况code发票productyear
1条回答
网友
1楼 · 发布于 2024-09-30 06:22:11

使用pandas时,始终尝试矢量化,而不是使用循环

您可以执行以下操作:

# for Year
NData['Year'] = Ndata['Resale Invoice Month'].str[1:5]

# remove trailing TR, only row have it
idx = Ndata['Commercial Product Code'].str[-2:]=='TR'
Ndata.loc[idx, 'Commercial Product Code'] = Ndata[idx].str[:-2]

相关问题 更多 >

    热门问题