Python 熊猫df与groupby口述

Python 熊猫df与groupby口述,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有这个df: line stop 1 1_a 1 1_b 1 1_c 2 2_a 2 2_c 我想创建以下目录: d={1:{“停止”:“1_a”,“1_b”,“1_c”},2:{“停止”:“2_a”,“2_b”,“2_c”} 有人知道如何用to_dict方法做到这一点 谢谢 您可以使用apply创建由列表填充的嵌套词典,然后最后: 如果需要通过一些分隔符连接值,例如,: d1 = df.groupby('line')['stop'].apply(','.j

我有这个df:

line stop
1    1_a 
1    1_b 
1    1_c
2    2_a
2    2_c
我想创建以下目录:

d={1:{“停止”:“1_a”,“1_b”,“1_c”},2:{“停止”:“2_a”,“2_b”,“2_c”}

有人知道如何用
to_dict
方法做到这一点


谢谢

您可以使用
apply
创建由列表填充的嵌套词典,然后最后:

如果需要通过一些分隔符连接值,例如

d1 = df.groupby('line')['stop'].apply(','.join).to_frame().to_dict('index')
print (d1)
{1: {'stop': '1_a,1_b,1_c'}, 2: {'stop': '2_a,2_c'}}
编辑:

多个列的解决方案,其中包含并省略了
到_frame()


由于您没有进行任何计算,您可以避免使用
to_dict
部分,并迭代分组以获取词典:

{key: {"stops": ",".join(value.stop.array)}
 for key, value in df.groupby("line")}


{1: {'stops': '1_a,1_b,1_c'}, 2: {'stops': '2_a,2_c'}}
也可以将子值保留为列表:

{key: {"stops": list(value.stop.array)} 
 for key, value in df.groupby("line")}

{1: {'stops': ['1_a', '1_b', '1_c']}, 2: {'stops': ['2_a', '2_c']}}

如何更改此设置以向嵌套添加多个列
df.groupby('line')[['stop','lat','lon']]].apply(list).to_frame().to_dict('index')
会起作用吗?@Pi-R-yop,只省略
。to_frame()
@Pi-R-并使用
.agg
代替
。apply
有没有办法将stop的每个名称添加为dict中的键:
{{'lat':3,'lon':1}}
完美!坦克很多!
{key: {"stops": ",".join(value.stop.array)}
 for key, value in df.groupby("line")}


{1: {'stops': '1_a,1_b,1_c'}, 2: {'stops': '2_a,2_c'}}
{key: {"stops": list(value.stop.array)} 
 for key, value in df.groupby("line")}

{1: {'stops': ['1_a', '1_b', '1_c']}, 2: {'stops': ['2_a', '2_c']}}