Python 3.x 如何将逗号分隔的值提取到pandas中的各个行?

Python 3.x 如何将逗号分隔的值提取到pandas中的各个行?,python-3.x,pandas,Python 3.x,Pandas,这是我的数据帧(其中authors列中的值是逗号分隔的字符串): 如何将其转换为长格式,如下所示: 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

这是我的数据帧(其中authors列中的值是逗号分隔的字符串):

如何将其转换为长格式,如下所示:

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(','))
,将该列表展平,将每个作者与每本书进行匹配,并使用每个匹配项构建一个新的dict列表。但这对我来说并不是很好,我猜熊猫有一个更干净的方法来做到这一点。

你可以在设置书的索引后,将作者一列一列地拆分,这几乎可以让你一直做到这一点。重命名要完成的列并对其排序

df.set_index('book').authors.str.split(',',expand=True.stack().reset_index('book'))
第0册
世界上最伟大的书吉姆
世界上最伟大的书查尔斯
吉姆,你有一本好书吗
一本关于书的书
最后一本书夏洛特
最后一本书吉姆
让你一路回家

df.set_索引('book'))\
.authors.str.split(“,”,expand=True)\
.stack()\
.reset_索引(“账簿”)\
.rename(列={0:'authors'})\
.sort_值('authors')[['authors','book']]\
.reset_索引(drop=True)
  • 最好的选择是使用,然后添加到列表中
    • 在“
      ”和“
      ”上拆分,否则逗号后面的值前面会有一个空格(例如,
      “Charles”
将熊猫作为pd导入
数据={'authors':['Jim,Charles','Jim','Charlotte','Charlotte,Jim'],'book':['The Great book in The World','An OK book','A book about books','The last book']}
df=pd.DataFrame(数据)
#显示(df)
作者书
吉姆,查尔斯世界上最伟大的书
吉姆有一本好书
夏洛特写了一本关于书的书
夏洛特,吉姆最后一本书
#分裂作者
df.authors=df.authors.str.split(',')
#炸柱
df=df.explode('authors')。重置索引(drop=True)
#显示(df)
作者书
吉姆是世界上最伟大的书
查尔斯是世界上最伟大的书
吉姆有一本好书
夏洛特写了一本关于书的书
4.最后一本书
吉姆读了最后一本书
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