熊猫-将数据从单行拆分为多行

时间:2019-12-18 08:07:19

标签: pandas

我正在尝试从具有特定模式的pandas Dataframe列中提取数据。我试图循环,以便每次出现都被创建为新行。下面是数据的样子:

id: id_101
description: id_name1
id: id_102
description: id_name2
id: id_103
description: id_name3

以上所有内容都存储在一行中。我正在尝试将每次出现的情况转换为以下新行:

 , id, description
0, id_101, id_name1 
1, id_102, id_name2
2, id_103, id_name3 

1 个答案:

答案 0 :(得分:1)

如果数据总是先与Series.str.split创建的帮助器列配对,DataFrame.pivot然后是GroupBy.cumcount

df = df['col'].str.split(': ', expand=True)
df['g'] = df.groupby(0)[1].cumcount()
df = df.pivot('g', 0, 1).rename_axis(index=None, columns=None)
print (df)
  description      id
0    id_name1  id_101
1    id_name2  id_102
2    id_name3  id_103

或者在:之后获取值,转换为numpy数组,然后重塑为新的DataFrame

a = df['col'].str.split(': ').str[1].to_numpy()
df = pd.DataFrame(a.reshape(-1, 2), columns=['id','description'])
print (df)
       id description
0  id_101    id_name1
1  id_102    id_name2
2  id_103    id_name3