Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将dataframe转换为列具有重复值且字典值为列表的字典_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python 将dataframe转换为列具有重复值且字典值为列表的字典

Python 将dataframe转换为列具有重复值且字典值为列表的字典,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我想得到这样一个结果 对于此数据帧: 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 coln]但这只为每个键提供一个值 我尝

我想得到这样一个结果

对于此数据帧:

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 coln]
但这只为每个键提供一个值


我尝试在datafram中使用group by,这将涵盖您需要的内容:

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]} In[22]:out={} 在[23]中:对于df[“Name”]中的i.tolist(): …:out[i]=df[df[“Name”]==i][“Val”].tolist() ...: In[24]:out
Out[24]:{apos;A':[1,2],'B':[1,3,4]}这将满足您的需要:

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]} In[22]:out={} 在[23]中:对于df[“Name”]中的i.tolist(): …:out[i]=df[df[“Name”]==i][“Val”].tolist() ...: In[24]:out Out[24]:{apos;A':[1,2],'B':[1,3,4]}您可以尝试:

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)
您可以尝试:

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)

这就是我要找的亚当。现在我只想看看我怎么知道这些字典值的不同这就是我要找的Adam。现在我只想看看我怎么知道这些字典的值有什么不同