我有一个与下面类似的数据框song obj'实际上是一个嵌套的字典,包含关于一首歌的各种信息
{data:{album:{album name:---, album id:---}},track{track name:---,track id:---}}
有些播放列表很长,因此最多有400列,每个列都用整数标记。在
^{pr2}$看起来像这样:
>>>
playlist id rating 0 1 2
0 8179 3 song obj 1 song obj 2 song obj 3
1 8764 2 song obj 4 song obj 5 NaN
2 8776 4 song obj 6 song obj 7 song obj 8
我试着让上面的数据帧看起来像这样,所有的“歌曲对象”都是垂直的,但在它们对应的播放列表编号旁边,就像下面的数据帧:
df1=pd.DataFrame({
"playlist id": {0: 8179,1:8179,2:8179,3:8764,4:8764,
5:8776,6:8776,7:8776},
"rating": {0:3, 1:3, 2:3, 3:2, 4:2, 5:4, 6:4, 7:4},
"song objects": {0:"song obj 1", 1:"song obj 2", 2:"song obj 3",
3:"song obj 4", 4:"song obj 5",5:"song obj 6",
6:"song obj 7",7:"song obj 8"}
})
>>>
playlist id rating song objects
0 8179 3 song obj 1
1 8179 3 song obj 2
2 8179 3 song obj 3
3 8764 2 song obj 4
4 8764 2 song obj 5
5 8776 4 song obj 6
6 8776 4 song obj 7
7 8776 4 song obj 8
我试过使用pd.wide_to_long
和pd.melt
,但到目前为止我没有运气。我也尝试过在堆栈交换上搜索,但由于我对编程/python/pandas不太熟悉,所以我没有正确的术语来找到我需要的东西..请帮助!在
注意:原因是最终我想将“song对象”解压到新列中。我想这在
df2=pd.concat([df2.drop(['song objects'], axis=1), df2['song objects'].apply(pd.Series)], axis=1)
您需要稍微修改一下,因为示例代码不会生成您指定的输出,例如
rating
列。在输出:
^{pr2}$相关问题 更多 >
编程相关推荐