我有下面的数据框
clm1, clm2, clm3
10, a, clm4=1|clm5=5
11, b, clm4=2
我期望的结果是
clm1, clm2, clm4, clm5
10, a, 1, 5
11, b, 2, Nan
我试过下面的方法
rows = list(df.index)
dictlist = []
for index in rows: #loop through each row to convert clm3 to dict
i = df.at[index, "clm3"]
mydict = dict(map(lambda x: x.split('='), [x for x in i.split('|') if '=' in x]))
dictlist.append(mydict)
l=json_normalize(dictlist) #convert dict column to flat dataframe
resultdf = example.join(l).drop('clm3',axis=1)
这给了我期望的结果,但我正在寻找一种更有效的方法来将clm3转换为dict,而不涉及每一行的循环
使用
str.extractall
获取您的值,并使用unstack
为每个唯一值将它们透视到一列和
str.get_dummies
为每个唯一的clm
获取一列两个步骤:
其思想是创建一个双重拆分,然后按索引分组,并将值作为列取消堆叠
相关问题 更多 >
编程相关推荐