我的df中有一个string列。
col a: 1, b: 2, c: 3 b: 1, c: 3, a: 4 c: 2, b: 4, a: 3
我希望将其转换为多列,如下所示:
a b c 1 2 3 4 1 3 3 4 2
在这方面需要帮助。我试图转换成一个命令,然后排序的命令。后,我想也许做一个透视表。不完全确定,如果它会做,但任何帮助或更好的方法将不胜感激。
hmae6n7t1#
对字典列表使用嵌套列表解析,其中split乘以,和:为双精度数,并传递给DataFrame构造函数:
split
,
:
DataFrame
df = pd.DataFrame([dict(y.split(': ') for y in x.split(', ')) for x in df['col']], index=df.index) print (df) a b c 0 1 2 3 1 4 1 3 2 3 4 2
m3eecexj2#
您可以使用str.extractall和unstack:
str.extractall
unstack
(df['col'].str.extractall('(\w+):\s*([^,]+)') .set_index(0, append=True).droplevel('match')[1] .unstack(0) )
输出:
a b c 0 1 2 3 1 4 1 3 2 3 4 2
2条答案
按热度按时间hmae6n7t1#
对字典列表使用嵌套列表解析,其中
split
乘以,
和:
为双精度数,并传递给DataFrame
构造函数:m3eecexj2#
您可以使用
str.extractall
和unstack
:输出: