假设我有以下数据集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)重命名每个列表,该怎么办?
谢谢!
答案 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]}