[英]Convert a column in a pandas DataFrame into multiple columns
我有一個帶有列的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)
上面的代碼將從“標識符”列中提取的值添加到DataFrame的末尾,而不是添加到相應的行。 如何將提取的值添加到與原始列相同的行/索引(“標識符”)?
一種方法是使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.