col1= ['A','B','A','C','A','B','A','C','A','C','A','A','A']
col2= [1,1,4,2,4,5,6,3,1,5,2,1,1]
df = pd.DataFrame({'col1':col1, 'col2':col2})
Run Code Online (Sandbox Code Playgroud)
对于A我们有[1,4,4,6,1,2,1,1]8个项目,但我想将数据帧转换为dict / list时将大小限制为5
输出:
Dict = {'A':[1,4,4,6,1],'B':[1,5],'C':[2,3,5]}
Run Code Online (Sandbox Code Playgroud)
使用pandas.DataFrame.groupby有apply:
df.groupby('col1')['col2'].apply(lambda x:list(x.head(5))).to_dict()
Run Code Online (Sandbox Code Playgroud)
输出:
{'A': [1, 4, 4, 6, 1], 'B': [1, 5], 'C': [2, 3, 5]}
Run Code Online (Sandbox Code Playgroud)
与 lambda 函数一起使用DataFrame.groupby,转换为列表并通过索引过滤前 5 个值,最后通过以下方式转换为字典Series.to_dict:
d = df.groupby('col1')['col2'].apply(lambda x: x.tolist()[:5]).to_dict()
print (d)
{'A': [1, 4, 4, 6, 1], 'B': [1, 5], 'C': [2, 3, 5]}
Run Code Online (Sandbox Code Playgroud)