我正试图用一种纯粹的矢量化方法来改进熊猫的迭代。我对矢量化有点陌生,很难让它起作用。
在一个dataframe字段中,我发现了所有基于字符串的地址记录。我需要为每个唯一的地址分别检索数据,并为返回的记录分配一个唯一的标识符。通过这种方式,我可以为每个地址都有一个UID,而不管数据中是否有多个地址。
我开发了一种利用向量和熊猫.apply方法的方法。
def addr_id(x):
global df
df['Unq_ID'][df['address'] == x] = uuid.uuid4()
pd.DataFrame(df['address'].unique(), columns=["column1"]).apply(lambda x: addr_id(x["column1"]), axis=1)但是,我正试图彻底消除.apply方法。这就是我被困的地方。
df['Unq_ID'][df['address'] == (pd.DataFrame(df['address'].unique(), columns=["column1"]))["column1"]] = uuid.uuid4()我一直得到一个ValueError:只能比较相同标记的系列对象
发布于 2020-11-23 18:33:58
你想摆脱潘达的申请是因为性能原因,对吗?
我可以提出一个不同的方法来解决你的问题吗?
您可以用column1的唯一值作为键,uuids作为值来构造dict,然后将它们映射到DataFrame:
uuid_dict = {key: uuid.uuid4() for key in df['column1'].unique()}
df['address'] = df.column1.map(uuid_dict)这将是非常快的,因为它避免了Python中的循环( Pandas应用程序在幕后是这样做的)。
https://stackoverflow.com/questions/64973369
复制相似问题