Python pandas dataframe可以更好地显示子列表

时间:2017-12-17 10:57:52

标签: python-3.x

我有以下数据:

data = {'class': ['a1', 'a2', 'a3'],
'score': [ 'b1', 'b2', 'b3'],
'fruit': [['apple1', 'pear1', 'guava1'], ['apple2', 'pear2'], ['guava3']]}

有谁知道pandas数据帧如何显示数据如下:

  class     fruit   score
     a1    apple1      b1
            pear1
           guava1
     a2    apple2      b2
            pear2
     a3    guava3      b3

实际上,上面的数据我试图简化这种情况。实际情况是可能有几个列,如'fruit',如下所示:

data2 = {'class': ['a1', 'a2', 'a3'],
'score': [ 'b1', 'b2', 'b3'],
'fruit': [['apple1', 'pear1', 'guava1'], ['apple2', 'pear2'], ['guava3']],
'motor': [['car1', 'truck1'], ['car2', 'truck2', 'van2'], ['car3', 'van3']]}

我希望使用pandas dataframe显示如下:

class     fruit   motor   score
   a1    apple1    car1      b1
          pear1  truck1   
         guava1
   a2    apple2    car2      b2
          pear2  truck2
                   van2
   a3    guava3    car3      b3
                   van3

我尝试过DaFanta的解决方案,但我不知道如何申请这样的第二或第三列。有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

a = pd.DataFrame.from_dict(data) open_df = a[['score', 'class']].join(a['fruit'].apply(lambda x: pd.Series(x))) open_df.set_index(['score', 'class']).stack()