Python字符串转换、去掉空格、添加连字符

Python字符串转换、去掉空格、添加连字符,python,string,pandas,formatting,uuid,Python,String,Pandas,Formatting,Uuid,熊猫数据框中有一列的格式如下 f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17 我想把它转换成: f1d3a40a-d06a-4b4a-83d4-4fc91f151117 我知道我可以使用replace(“,”)删除空格,但我不确定如何在需要的确切位置插入连字符 我也不知道如何将其应用于熊猫系列对象 任何帮助都将不胜感激 这看起来像一个UUID,所以我只使用这个模块 >>> import uuid >>> s =

熊猫数据框中有一列的格式如下

f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17

我想把它转换成:

f1d3a40a-d06a-4b4a-83d4-4fc91f151117

我知道我可以使用
replace(“,”)
删除空格,但我不确定如何在需要的确切位置插入连字符

我也不知道如何将其应用于熊猫系列对象


任何帮助都将不胜感激

这看起来像一个UUID,所以我只使用这个模块

>>> import uuid
>>> s = 'f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17'
>>> uuid.UUID(''.join(s.split()))
UUID('f1d3a40a-d06a-4b4a-83d4-4fc91f151117')
>>> str(uuid.UUID(''.join(s.split())))
'f1d3a40a-d06a-4b4a-83d4-4fc91f151117'
编辑:

a=“f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17”
c=“f1d3a40a-d06a-4b4a-83d4-4fc91f151117”
b=[4,2,2,2,6]
def space_2_连字符(s,num_列表,连字符=“-”):
sarr=s.split(“”)
如果len(sarr)!=总和(数量列表):
引发异常(“str split num必须等于sum(num_list)”)
out=[]
k=0
对于num_列表中的n:
out.append(“.join(sarr[k:k+n]))
k+=n
返回连字符。连接(外)
印刷品(a)
打印(空格和连字符(a、b))
印刷品(c)

这是单个单元格还是整个列?还有,连字符背后的逻辑是什么?整个专栏,连字符的逻辑是从AWS athena下载之前的原始格式,现在我需要将这个数据帧连接到原始数据(有连字符)这肯定是我以前不知道的!不过,我在熊猫系列中使用它仍然有困难。。。。使用:“df.col=str(uuid.uuid(“”.join(df.col.str.split())))”我得到一个类型错误“类型错误:序列项0:预期的str实例,找到的列表”您必须使用
apply
str.replace
df.col.str.split()。
df = pd.DataFrame({'col':['f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17',
                          'f1 d3 a4 0a d0 6a 4b 4a 83 d4 4f c9 1f 15 11 17']})

df['col'] = df['col'].str.split().str.join('').apply(uuid.UUID)
print (df)
                                    col
0  f1d3a40a-d06a-4b4a-83d4-4fc91f151117
1  f1d3a40a-d06a-4b4a-83d4-4fc91f151117