从另一列获取唯一数据

时间:2020-06-05 11:37:53

标签: python pandas

我有一个包含州和城市的数据集,现在一个州有多个城市,我想按州对它们进行分组并将输出转换为JSON

数据框

    City     State
0   A        foo
1   B        bar
2   D        foo
3   C        moo
4   E        foo
5   F        bar

我正在这样做:

df = data[["City","State"]]
df.groupby("State")

但是我得到以下内容

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000265BC3422C8>

JSON:

{ 'foo':[A,D,E],
  'bar':[B,F],
   .
   .
}

1 个答案:

答案 0 :(得分:2)

将值转换为集合,然后转换为列表以删除重复项,然后转换为json

j = df.groupby('State')['City'].apply(lambda x: list(set(x))).to_json()
print (j)
{"bar":["B","F"],"foo":["A","E","D"],"moo":["C"]}

或通过DataFrame.drop_duplicates删除重复项,然后聚合list

j = df.drop_duplicates(['State','City']).groupby('State')['City'].apply(list).to_json()