首页 > 解决方案 > Pandas:通过两个分隔符将列拆分为多列

问题描述

我有这样的数据

ID   INFO
1    A=2;B=2;C=5
2    A=3;B=4;C=1
3    A=1;B=3;C=2

我想将信息列拆分为

ID   A    B    C
1    2    2    5
2    3    4    1
3    1    3    2

我可以使用一个分隔符拆分列

df['A'], df['B'], df['C'] = df['INFO'].str.split(';').str

然后再次拆分,=但如果我有很多行,尤其是当有很多字段无法事先硬编码时,这似乎效率不高。

任何建议都将受到欢迎。

标签: pythonpandas

解决方案


浏览系列比遍历数据框的行要快得多。

所以我会这样做:

pd.DataFrame([dict([x.split('=') for x in t.split(';')]) for t in df['INFO']], index=df['ID']).reset_index()

它按预期给出:

   ID  A  B  C
0   1  2  2  5
1   2  3  4  1
2   3  1  3  2

它应该比拆分两次数据框列更快。


推荐阅读