我有一个带有 2 列的 pandas 数据框(下面的代码段)。我正在尝试使用 City 列来推断自治市镇(您会注意到一些需要替换的未指定值)。为此,我试图为每个城市显示出现次数最多的自治市镇并输出到字典,其中键是城市,值是该城市出现次数最多的自治市镇。
City Borough
Brooklyn Brooklyn
Astoria Queens
Astoria Unspecified
Ridgewood Unspecified
Ridgewood Queens
因此,如果发现 Ridgewood 与皇后区配对 100 次、布鲁克林区 4 次和曼哈顿区 1 次,则该配对将是 Ridgewood : Queens。
到目前为止,我已经尝试过这段代码:
specified = data[['Borough','City']][data['Borough']!= 'Unspecified']
paired = specified.Borough.groupby(specified.City).max()
乍一看,这似乎是正确的输出,但仔细检查后,输出根本不正确。有任何想法吗?
编辑:
尝试了以下建议:paired = specified.groupby('City').agg(lambda x: stats.mode(x['Borough'])[0])
我注意到一些自治市镇被截断,如下所示:
paired.Borough.value_counts()
#[Out]# QUEENS 58
#[Out]# MANHATTAN 7
#[Out]# STATEN ISLAND 4
#[Out]# BRONX 4
#[Out]# BROOKLYN 3
#[Out]# MANHATTA 2
#[Out]# STATE 1
#[Out]# QUEEN 1
#[Out]# MANHA 1
#[Out]# BROOK 1
当然我可以手动替换截断的单词,但我很想知道原因是什么?
PS - 这是 DF 指定 FYI 的输出:
specified
#[Out]# <class 'pandas.core.frame.DataFrame'>
#[Out]# Int64Index: 719644 entries, 1 to 396225
#[Out]# Data columns:
#[Out]# Borough 719644 non-null values
#[Out]# City 651617 non-null values
#[Out]# dtypes: object(2)
specified.Borough.value_counts()
#[Out]# QUEENS 215382
#[Out]# BROOKLYN 208565
#[Out]# MANHATTAN 150016
#[Out]# BRONX 94648
#[Out]# STATEN ISLAND 51033