我正在创建一个函数来根据其他列的值设置UUID列。我想要的是在将数据帧索引到Elasticsearch时处理重复。基于多个列的值,UUID应该始终相同
我的输出有问题,为每行生成相同的UUID
数据帧
cols = ['col1', 'col2']
data = {'col1': ['Mike','Robert','Sandy'],
'col2': ['100','200','300']}
col1 col2
0 Mike 100
1 Robert 200
2 Sandy 300
功能
def create_uuid_on_n_col (df):
# concat column string values
concat_col_str_id = df.apply(lambda x: uuid.uuid5(uuid.NAMESPACE_DNS,'_'.join(map(str, x))), axis=1)
return concat_col_str_id[0]
输出
df['id'] = create_uuid_2_col(df[['col1','col2']])
col1 col2 id
0 Mike 100 a17ad043-486f-5eeb-8138-8fa2b10659fd
1 Robert 200 a17ad043-486f-5eeb-8138-8fa2b10659fd
2 Sandy 300 a17ad043-486f-5eeb-8138-8fa2b10659fd
不需要定义另一个助手函数。我们还可以矢量化列的连接,如下所示
如果不想导入分部,请定义一个函数
使用原始函数,如下所示
相关问题 更多 >
编程相关推荐