独特的价值观python

时间:2017-06-23 19:02:58

标签: python pandas dataframe unique

我试图基本查看一列,如果该列具有唯一值,则输入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,因为它是唯一的。我只是不知道为什么我在街道栏中收到了这个错误。

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