我有一个巨大的数据集,我需要计算每行重复项目的数量。 例如:在一个特定的行中,我有客户X。我需要创建一个新的列,该列将显示客户X在数据集中注册的次数。 我做了一个代码,但性能非常差。我将花大约3天的时间来完成数据集。 是否有人可以帮助改进此计算的性能?下面是我的想法的一个例子:
#importing resources
import sys
import pandas as pd
from __future__ import print_function
#creating a dataset as example:
df1= pd.DataFrame({'Customer':["Wilfred","Abner","Rishcash","Debie"],'Dealer':["Alpha","Beta","Gama","Delta"],'Vehicle_model':["Jeep","Volks","Chrysler","Volvo"],'CITY':["Osasco","Denver","Rome","Tokyo"]})
#creating new columns
df1['Qtd leads']=1
df1['Qtd dealers']=1
df1['Leads City']=1
df1['Leads State']=1
df1['Leads V_Model']=1
#function to estimate repetitive values
def cont(quem):
a=df1['Customer'].value_counts()[quem]
return a
#iterate in the dataset
i=0
for i in df1.index:
df1['Qtd leads'][i]=df1['Customer'].value_counts()[df1['Customer'][i]]
df1['Qtd dealers'][i]=df1['Dealer'].value_counts()[df1['Dealer'][i]]
df1['Leads V_Model'][i]=df1['Vehicle_model'].value_counts()[df1['Vehicle_model'][i]]
df1['Leads City'][i]=df1['CITY'].value_counts()[df1['CITY'][i]]
print(i, end='\r')
sys.stdout.flush()
您可以使用groupby和merge
以城市为例:
df1.groupby(by='CITY')
按“城市”对数据帧进行分组。这将为您提供一个groupby对象,其中包含许多用于查看这些分组数据的漂亮函数,例如size()
.size()
然后给出一个数据帧,其中城市作为索引,以及它被视为第0列的频率reset_index()
然后将索引还原为一列,因此有两列:CITY和0接下来重命名0列(
.rename(columns={0 : 'Leads City'})
)最后,将原始数据框与列“CITY”上的新数据框合并
df1 = pd.merge(df1,dfcity,on='CITY')
您可以对要计数的每一列重复该操作
相关问题 更多 >
编程相关推荐