Python 将数据帧中的一列转换为多列

Python 将数据帧中的一列转换为多列,python,pandas,Python,Pandas,我有一个带有列的pandas DataFrame,列中有以下值: Identifier [1;12;7;3;0] [4;5;2;6;0] 我想将此列中方括号内的值转换为5个新列。基本上,我希望将这些值拆分为5个新列,同时保持新列的索引与原始列相同 Identifier,a,b,c,d,e [1;12;7;3;0],1,12,7,3,0 [4;5;2;6;0],4,5,2,6,0 pattern = re.compile(r'(\d+)') for g in raw_data["Identif

我有一个带有列的pandas DataFrame,列中有以下值:

Identifier
[1;12;7;3;0]
[4;5;2;6;0]
我想将此列中方括号内的值转换为5个新列。基本上,我希望将这些值拆分为5个新列,同时保持新列的索引与原始列相同

Identifier,a,b,c,d,e
[1;12;7;3;0],1,12,7,3,0
[4;5;2;6;0],4,5,2,6,0

pattern = re.compile(r'(\d+)')
for g in raw_data["Identifier"]:
    new_id = raw_data.Identifier.str.findall(pattern) # this converts the Identifier into a list of the 5 values
raw_data.append({'a':new_id[0],'b':new_id[1],'c':new_id[2],'d':new_id[3],'d':new_id[4]}, ignore_index=True)

上面的代码将列“identifier”中提取的值添加到数据帧的末尾,而不是相应的行。如何将提取的值添加到与原始列(“标识符”)相同的行/索引中?

一种方法是使用
str
方法获取数字,从中创建新的数据帧,然后连接(或合并)结果。比如说,

id_data = df.Identifier.str.strip("[]").str.split(";").tolist()
df_id = pd.DataFrame(id_data, columns=list("abcde"), index=df.index, dtype=int)
df2 = df.join(df_id)
产生类似于

      Identifier  a   b  c  d  e
10  [1;12;7;3;0]  1  12  7  3  0
20   [4;5;2;6;0]  4   5  2  6  0

太好了。非常感谢。