首页 > 解决方案 > 如何将 Pandas 字符串列拆分为不同的行?

问题描述

这是我的问题。我有这样的数据:

data = {
    'name': ["Jack ;; Josh ;; John", "Apple ;; Fruit ;; Pear"], 
    'grade': [11, 12],
    'color':['black', 'blue']
}

df = pd.DataFrame(data)

看起来像:

                     name  grade  color
0    Jack ;; Josh ;; John     11  black
1  Apple ;; Fruit ;; Pear     12   blue

我希望它看起来像:

     name   age  color      
0    Jack   11   black
1    Josh   11   black
2    John   11   black
3    Apple  12   blue
4    Fruit  12   blue
5    Pear   12   blue

所以首先我需要使用“;;”来拆分名称 然后将该列表分解为不同的行

标签: python-3.xpandaspandas-datareader

解决方案


Series.str.split与 reshape by 一起使用DataFrame.stack并添加原始的另一列 by DataFrame.join

c = df.columns
s = (df.pop('name')
       .str.split(' ;; ', expand=True)
       .stack()
       .reset_index(level=1, drop=True)
       .rename('name'))
df = df.join(s).reset_index(drop=True).reindex(columns=c)
print (df)
    name  grade  color
0   Jack     11  black
1   Josh     11  black
2   John     11  black
3  Apple     12   blue
4  Fruit     12   blue
5   Pear     12   blue

推荐阅读