pandas 字符串到列

2guxujil  于 2023-01-19  发布在  其他
关注(0)|答案(2)|浏览(145)

我的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

在这方面需要帮助。
我试图转换成一个命令,然后排序的命令。后,我想也许做一个透视表。不完全确定,如果它会做,但任何帮助或更好的方法将不胜感激。

hmae6n7t

hmae6n7t1#

对字典列表使用嵌套列表解析,其中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
m3eecexj

m3eecexj2#

您可以使用str.extractallunstack

(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

相关问题