是否可以从列表中的特定元素拆分列?

时间:2018-11-22 06:38:51

标签: python pandas list

我试图像这样将数据框转换为列表。

这是转换前的数据帧。

import pygame
pygame.mixer.init()
pygame.mixer.music.load('02_3AM.wav')
pygame.mixer.music.play()

the data frame

这是我尝试使用此代码的列表

df_gr = df_com.groupby(['Publication_Year_x', 'UPC', 'CPC']).size().unstack(fill_value=0)
df_gr_peryear = df_gr.replace(0, '', regex=True)

df_gr_peryear

这是结果

enter image description here

但是我只想将其拆分为所有行中的第一个元素。预期的结果将是

list_allyear = [(list(i), v) for i, v in df_gr_peryear.stack().iteritems()]
list_allyear = pd.DataFrame(list_allyear, columns=["MOC", "count"])
list_allyear

我尝试过year MOC count 1971 [136,-] 1971 [136, A01D] . . 1972 [231, H01L] 5 ,但是它将行中包含的所有元素拆分

1 个答案:

答案 0 :(得分:2)

只是简化了代码,您可以在其中使用fill_value=''而不是replace,然后创建字典以使列表理解具有最终的DataFrame

cols = ['Publication_Year_x', 'UPC', 'CPC']
s = df_com.groupby(cols).size().unstack(fill_value='').stack()

L = [{'year': idx[0], 'MOC': list(idx[1:]), 'count': vals} for idx, vals in s.items()]
list_allyear = pd.DataFrame(L)