这是我的数据框(作者列中的值是逗号分隔的字符串):

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/

10-16 11:31