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

Python 我有大量的数据,我想实现以下操作,但需要花费太多的时间。我如何优化它?,python,pandas,optimization,bigdata,Python,Pandas,Optimization,Bigdata,我正在处理一组数据,我需要先清理一下,大约400.000行 要采取的两项行动: -转售发票月份是字符串M201705,我想制作一个名为 年份,仅为2017年 一些商业产品也是字符串,最后是TR,我想从这些产品中删除TR。例如M23065TR,我想更改M23065中的所有产品,但在该列中也有产品名称,例如已经很好的M340767 下面是我的代码,它需要2个多小时才能运行,您是否有一个解决方案来简化它,以减少时间。 非常感谢你 对于Rangenda中的i。形状[0]: Ndata.loc[i,'年]

我正在处理一组数据,我需要先清理一下,大约400.000行

要采取的两项行动: -转售发票月份是字符串M201705,我想制作一个名为 年份,仅为2017年

一些商业产品也是字符串,最后是TR,我想从这些产品中删除TR。例如M23065TR,我想更改M23065中的所有产品,但在该列中也有产品名称,例如已经很好的M340767 下面是我的代码,它需要2个多小时才能运行,您是否有一个解决方案来简化它,以减少时间。 非常感谢你 对于Rangenda中的i。形状[0]: Ndata.loc[i,'年]=Ndata.loc[i,'转售发票月][1:5] 如果Ndata['Commercial Product Code'][i][2:][='TR'==True: Ndata.loc[i,'Commercial Product Code']=Ndata.loc[i,'Commercial Product Code'][:-2] 使用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]

你能提供一个答案吗?可能是:Ndata['Commercial Product Code']=Ndata['Commercial Product Code']。str.replace'TR',Hi@hunzter,谢谢你的回答。它似乎不起作用。我有一个错误告诉:…嗨@Rickou95有一个语法错误,我已经修复了。必须是Ndata['Commercial Product Code'].str,而不是Ndata.str['Commercial Product Code']