如何检查特定熊猫数据框列中的值是否唯一

时间:2019-07-12 13:20:01

标签: python pandas dataframe duplicates unique

我需要检查pandas数据框列中是否多次存在特定值。这是基本代码;

for index, row in df_x.iterrows():
    try:
        if row[1] in df_y['b'].values:  

# if row[1] exists in df_y i want to know how many time is it repeated, or if it is unique or not

    except Exception as e:
        print('Error ', e)

6 个答案:

答案 0 :(得分:0)

如果您特别关心第一行中的值出现多少次:

np.random.seed(2)
df = pd.DataFrame({'a':np.random.rand(10) // .1,
                    'b':np.random.rand(10) // .01,
                    'c':np.random.choice(['A','B','C', 'D', 'E'], 10)})
df['c'].value_counts()[df.loc[0,'c']]

df

     a     b  c
0  7.0  11.0  B
1  5.0  14.0  D
2  1.0  85.0  A
3  3.0  50.0  C
4  4.0  21.0  B
5  6.0  99.0  E
6  7.0  31.0  A
7  6.0  25.0  B
8  6.0  80.0  B
9  9.0  35.0  B

df['c'].value_counts()[df.loc[0,'c']]返回5(非唯一),而 df['c'].value_counts()[df.loc[5,'c']]返回1。如果您要查找的行是np.nan,以此类推,则可能需要添加一些异常处理。

答案 1 :(得分:0)

Pandas可以帮助您避免循环。熊猫提供了许多功能来帮助您实现这一目标

例如

import pandas as pd

# data

df = pd.DataFrame({'uni':[1,2,3,4],'not_uni':[2,2,1,3]})

# value_counts

print(df['uni'].value_counts())
print(df['not_uni'].value_counts())

这将计算值。唯一值的值为1,非唯一值的值大于1。

enter image description here

如您所见,在uni列中只有1,因为没有重复的值,在not_uni列中将有2,它重复了两次。

答案 2 :(得分:0)

您可以使用Series / Dataframe方法isin,然后使用sum来计数发生次数。

以您的示例为例:

for index, row in df_x.iterrows():
    try:
        count = df_y['b'].isin([row[1]]).sum()
        print("df_y['b'] contains {} times the value {}".format(count, row[1])) 

    except Exception as e:
        print('Error ', e)

但这并不是真正有效的方法,因为您将为每个b的值遍历df_y的{​​{1}}列。

首先,您可以在父列中执行row[1],以避免多次计数相同的值,其次,使用带有unique的东西可以避免很多循环。您可以使您的问题更清楚一些,以便我们可以确切知道您的要求,因为这对我来说还不是很清楚。

答案 3 :(得分:0)

以下代码将为您提供col列中的重复值:

list(df["col"].value_counts()[df["col"].value_counts() > 1].index)

答案 4 :(得分:0)

您有一个由df命名的DataFrame 因此,您想知道以“ spec_col”命名的特定列包含唯一值

import pandas as pd

pd.Series(df["spec_col"]).is_unique
>>> True 

答案 5 :(得分:0)

我需要做同样的事情,但是我想有更好的方法,例如先清理并更好地更改熊猫数据框。

反正这是我的解决方法

np.sum(df[df['col_name'] == value]['col_name'].value_counts())

这可为您提供 col_name 列中重复值( )的计数。