循环创建多个数据集以将其转换为列表

时间:2019-12-11 11:17:59

标签: pandas list loops

假设我有以下数据集df:

data = {'Logic':['Social', 'H&S', 'General', 'Social', 'Social', 'General'], 'Var1':['Wage', 'Health', 'Strike', 'Bonus' ,  'Hours', 'Protest'],
        'Var2':[23,75,45, 32,13,14]}
df = pd.DataFrame(data)

df有一个名为Logic的列。在该列中,有3个唯一值:“社交”,“ H&S”,“常规”

我正在尝试创建3个不同的列表,每个列表用于df ['Logic']的唯一值,每个列表都包含df中它们各自行中的值。我的结果将是:

  

一般= ['罢工','抗议',45,14] H&S = ['健康',75]社会=   等...

到目前为止,我已经尝试过:

list_lexi = df['Logic'].tolist()
for i in list_lexi:
    i = lexi[lexi['Logic']==i].iloc[:,1:].values.tolist()

但是我知道我不能简单地在循环内创建一个新列表。

有什么建议吗?

此外,如果我要根据唯一值+'_list'(例如,Social_list)重命名每个列表,该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我的解决方法:

gb = df.groupby('Logic')
gb.apply(lambda x: x.set_index('Logic').melt().value.tolist()).to_dict()

输出:

{'General': ['Strike', 'Protest', 45, 14],
 'H&S': ['Health', 75],
 'Social': ['Wage', 'Bonus', 'Hours', 23, 32, 13]}