Python nunique不包括熊猫中的某些值
我正在计算每行的唯一值。但是,我希望排除值0,然后计算唯一值Python nunique不包括熊猫中的某些值,python,pandas,dataframe,Python,Pandas,Dataframe,我正在计算每行的唯一值。但是,我希望排除值0,然后计算唯一值 d = {'col1': [1, 2, 3], 'col2': [3, 4, 0], 'col3': [0, 4, 0],} df = pd.DataFrame(data=d) df col1 col2 col3 0 1 3 0 1 2 4 4 2 3 0 0 预期产量 col1 col2 col3 u
d = {'col1': [1, 2, 3], 'col2': [3, 4, 0], 'col3': [0, 4, 0],}
df = pd.DataFrame(data=d)
df
col1 col2 col3
0 1 3 0
1 2 4 4
2 3 0 0
预期产量
col1 col2 col3 uniques
0 1 3 0 2
1 2 4 4 2
2 3 0 0 1
df.nunique(axis=1)
,这包括所有值要做到这一点,您只需用Nan值替换零即可
import pandas as pd
import numpy as np
d = {'col1': [1, 2, 3], 'col2': [3, 4, 0], 'col3': [0, 4, 0]}
df = pd.DataFrame(data=d)
df['uniques'] = df.replace(0, np.NaN).nunique(axis=1)
试试这个:
def func(x):
s = set(x)
s.discard(0)
return len(s)
df['uniq'] = df.apply(lambda x: func(x), axis=1)
不使用
替换
的更简洁版本:
df['unique'] = df[df!=0].nunique(axis=1)
df
输出:
col1 col2 col3 unique
0 1 3 0 2
1 2 4 4 2
2 3 0 0 1