我想获得这样的结果。
对于此数据框:
Name Val
A 1
A 2
B 1
B 3
B 4
我想要像{'A':[1,2],'B';[1,3,4]}
我将有两个这样的数据框,我的目标是实现每个键的值差异。像键“ B”一样,其他数据帧的值可以为1,5。
我不想使用循环,因为数据框会很大。
我尝试使用
df.set_index(key).to_dict()[value-colum]
,但是每个键只给我一个值。
我尝试将分组依据用于datafram
答案 0 :(得分:0)
这将满足您的需求:
In [22]: out = {} In [23]: for i in df["Name"].tolist(): ...: out[i] = df[df["Name"]==i]["Val"].tolist() ...: In [24]: out Out[24]: {'A': [1, 2], 'B': [1, 3, 4]}
答案 1 :(得分:0)
您可以尝试:
ddict = {
'A':[],
'B':[]
}
按列过滤数据,并从另一列返回值。将每个字典键设置为这些结果:
ddict['A'] = list(df[df['Name'] == 'A']['Val'].values)
ddict['B'] = list(df[df['Name'] == 'B']['Val'].values)
输出:
{
'A': ['1', '2'],
'B': ['1', '3', '4']
}
编辑:或者,如果要遍历所有键,则:
for key in ddict.keys():
ddict[key] = list(df[df['Name'] == key]['Val'].values)