将一个单元格中具有多个值的行分隔为excel中的单个行

将一个单元格中具有多个值的行分隔为excel中的单个行,excel,pandas,excel-formula,Excel,Pandas,Excel Formula,我有一个姓名数据集(csv文件),其中列出了姓名、姓名人数、他们的“等级”以及姓名本身 我正在寻找一种在excel中将所有名称分隔成一行的方法,这在理想情况下是可行的,但也许pandas中的某些内容是一种选择 问题是许多行包含多个逗号分隔的名称 数据如下所示 rank | number of occurrences | name 1 | 10000 | marie 2 | 9999 | sophie

我有一个姓名数据集(csv文件),其中列出了姓名、姓名人数、他们的“等级”以及姓名本身

我正在寻找一种在excel中将所有名称分隔成一行的方法,这在理想情况下是可行的,但也许pandas中的某些内容是一种选择

问题是许多行包含多个逗号分隔的名称

数据如下所示

rank   | number of occurrences  | name
1      | 10000                  | marie
2      |  9999                  | sophie
3      |  9998                  | ellen
...
...
50     |    122                  | jude, allan, jaspar
我希望每一个名字都在一行上,旁边有相应的出现次数。军衔重复很好

像这样的

rank   | number of occurrences  | name
1      | 10000                  | marie
2      |  9999                  | sophie
3      |  9998                  | ellen
..
...
50     |    122                 | jude
50     |    122                 | allan
50     |    122                 | jaspar
使用df.explode()

它的工作方式

df.name=# Equivalent of df.assign(name=

df.name.str.split(',')#puts the names in list
df.explode('name')# Disintegrates the multiple names into one per row 




rank  number of occurrences    name
0     1                10000   marie
1     2                 9999  sophie
2     3                 9998   ellen
3    50                  122    jude
3    50                  122   allan
3    50                  122  jaspar

所提供的答案被标记为低质量职位,以供审查。以下是一些指导原则。这一答案可以从解释中获益。仅代码答案不被视为“好”答案。来自评论。
df.name=# Equivalent of df.assign(name=

df.name.str.split(',')#puts the names in list
df.explode('name')# Disintegrates the multiple names into one per row 




rank  number of occurrences    name
0     1                10000   marie
1     2                 9999  sophie
2     3                 9998   ellen
3    50                  122    jude
3    50                  122   allan
3    50                  122  jaspar
In [60]: df
Out[60]:
   rank   no                 name
0    50  122  jude, allan, jaspar

In [61]: df.assign(name=df['name'].str.split(',')).explode('name')
Out[61]:
   rank   no     name
0    50  122     jude
0    50  122    allan
0    50  122   jaspar