【问题标题】:Unique values python唯一值python
【发布时间】:2017-06-23 19:02:58
【问题描述】:

我试图基本上查看一列,如果该列具有唯一值,则输入 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: "not in index" 我不知道为什么。我尝试在 Number 列上运行它,我得到了我想要的结果:

    Street            Number    Unique
0   1312 Oak Avenue     1         NaN
1   14212 central Ave   2          1
2   981 franklin way    1          1

所以我的指定哪些是唯一的列称为唯一的,它将唯一的行放在唯一的行上,而重复的行放在 NaN 上。因此,在这种情况下,我有 2 个,它注意到并制作第一个 NaN,第二个提供 1,因为它们只有 1 个,所以它也为我们提供了 1,因为它是唯一的。我只是不知道为什么我在 street 专栏中收到了这个错误。

【问题讨论】:

    标签: python pandas dataframe unique


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2023-04-10
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多