Python Pandas:计算行中的唯一值

时间:2014-08-15 16:13:56

标签: python pandas

我有一个大的(16000行)数据框,如下面的df。我想生成一个新列,它计算每行中唯一值的数量,而不迭代每一行。

到目前为止,我已将pd.Series.value_counts方法与pd.DataFrame.apply()pd.DataFrame.sum()一起使用。但是当数据帧中存在重复值时,这将无法获得正确的结果。如何计算数据帧每行中唯一值的数量而不迭代它?

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(5,5))
>>> df
      0         1         2         3         4
0  0.429437 -0.931365  0.182996  0.627381 -0.166898
1  1.094186  0.080042  0.924192  0.120056  0.667423
2 -0.439858  1.681652 -1.753300  0.390554  0.561703
3  1.579391  1.377110  0.892134  1.704882  0.410462
4 -0.113080 -0.726894  1.904882 -0.800783  0.709755
>>> df['unique'] = df.apply(pd.Series.value_counts, axis=1).sum(axis=1)
>>> df
      0         1         2         3         4  unique
0 -0.964615  0.039836 -0.004675  0.067316  0.266369       5
1 -1.582173 -1.329946 -0.597782  1.856062  1.056681       5 
2 -0.566920 -0.107541  0.672243 -1.374591 -0.243655       5
3  0.357264  1.662374 -1.477057  0.629704  0.436156       5
4 -0.318111 -0.472437 -0.222260  0.463293 -0.394258       5

0 个答案:

没有答案