Используйте groupby
+ agg
с list
и конвертируйте, используя to_dict
с параметром orient='index'
:
d = df.groupby('Col_1').agg(list).to_dict(orient='index')
print(d)
{1: {'Col_2': ['Yes', 'Yes', 'No'], 'Col_3': ['A', 'B', 'C']},
2: {'Col_2': ['No', 'Yes', 'No'], 'Col_3': ['C', 'C', 'D']},
3: {'Col_2': ['Yes', 'No', 'No'], 'Col_3': ['A', 'B', 'C']},
4: {'Col_2': ['Yes'], 'Col_3': ['C']}}
d = {key:[value] for key,value in d.items()}
print(d)
{1: [{'Col_2': ['Yes', 'Yes', 'No'], 'Col_3': ['A', 'B', 'C']}],
2: [{'Col_2': ['No', 'Yes', 'No'], 'Col_3': ['C', 'C', 'D']}],
3: [{'Col_2': ['Yes', 'No', 'No'], 'Col_3': ['A', 'B', 'C']}],
4: [{'Col_2': ['Yes'], 'Col_3': ['C']}]}
print(df.groupby('Col_1').agg(list))
Col_2 Col_3
Col_1
1 [Yes, Yes, No] [A, B, C]
2 [No, Yes, No] [C, C, D]
3 [Yes, No, No] [A, B, C]
4 [Yes] [C]