我正在尝试从具有特定模式的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
答案 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