这是我的数据框(作者列中的值是逗号分隔的字符串):
authors book
Jim, Charles The Greatest Book in the World
Jim An OK book
Charlotte A book about books
Charlotte, Jim The last book
如何将其转换为长格式,如下所示:authors book
Jim The Greatest Book in the World
Jim An OK book
Jim The last book
Charles The Greatest Book in the World
Charlotte A book about books
Charlotte The last book
我尝试将各个作者提取到一个列表 authors = list(df['authors'].str.split(','))
中,将该列表展平,将每个作者与每本书进行匹配,并在每个匹配项中构建一个新的 dicts 列表。但这对我来说似乎不是很pythonic,我猜pandas有一种更简洁的方法来做到这一点。 最佳答案
在将索引设置为书籍后,您可以逐列拆分作者,这将使您几乎一路走到那里。重命名和排序列以完成。
df.set_index('book').authors.str.split(',', expand=True).stack().reset_index('book')
book 0
0 The Greatest Book in the World Jim
1 The Greatest Book in the World Charles
0 An OK book Jim
0 A book about books Charlotte
0 The last book Charlotte
1 The last book Jim
并带你一路回家df.set_index('book')\
.authors.str.split(',', expand=True)\
.stack()\
.reset_index('book')\
.rename(columns={0:'authors'})\
.sort_values('authors')[['authors', 'book']]\
.reset_index(drop=True)
关于python-3.x - 如何将逗号分隔值提取到 Pandas 中的各个行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41244981/