我试图基本查看一列,如果该列具有唯一值,则输入1,但如果不是,则只输入NaN,我的数据框如下所示:
Street Number
0 1312 Oak Avenue 1
1 14212 central Ave 2
2 981 franklin way 1
我用来将数字1放在唯一值旁边的代码如下:
df.loc[(df['Street'].unique()), 'Unique'] = '1'
然而,当我运行这个时,我得到这个错误KeyError:“不在索引中”我不知道为什么。我尝试在Number列上运行它,我得到了我想要的结果:
Street Number Unique
0 1312 Oak Avenue 1 NaN
1 14212 central Ave 2 1
2 981 franklin way 1 1
所以我的列指定了哪些是唯一的,它被称为Unique,它将一个由唯一的行和NaN由一个重复的行放置。因此,在这种情况下,我有2个,它注意到并且制作了第一个NaN,第二个它提供了1,因为它们只有1个,所以它为我们提供了1,因为它是唯一的。我只是不知道为什么我在街道栏中收到了这个错误。
答案 0 :(得分:1)
那并没有真正产生你想要的结果。 df['Number'].unique()
,array([1, 2], dtype=int64)
的输出恰好位于索引中。如果Number
改为[3, 4, 3]
,那么您在该列上会遇到同样的问题。
对于您正在寻找的内容,选择不在duplicated
的位置或删除重复项后您离开的位置可能会比unique
更好:
df.loc[~(df['Number'].duplicated()), 'Unique'] = 1
df
Out[51]:
Street Number Unique
0 1312 Oak Avenue 1 1.0
1 14212 central Ave 2 1.0
2 981 franklin way 1 NaN
df.loc[df['Number'].drop_duplicates(), 'Unique'] = 1
df
Out[63]:
Street Number Unique
0 1312 Oak Avenue 1 NaN
1 14212 central Ave 2 1.0
2 981 franklin way 1 1.0