我有以下数据:
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的解决方案,但我不知道如何申请这样的第二或第三列。有人可以帮忙吗?提前谢谢。
答案 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()