python - 如何通过 Pandas 中的两列计算唯一记录?

标签 python pandas dataframe group-by

我在 Pandas 中有数据框:

In [10]: df
Out[10]:
    col_a    col_b  col_c  col_d
0  France    Paris      3      4
1      UK    Londo      4      5
2      US  Chicago      5      6
3      UK  Bristol      3      3
4      US    Paris      8      9
5      US   London     44      4
6      US  Chicago     12      4

我需要计算独特的城市。我可以计算独特的状态

In [11]: df['col_a'].nunique()
Out[11]: 3

我可以尝试计算独特的城市

In [12]: df['col_b'].nunique()
Out[12]: 5

但这是错误的,因为美国的巴黎和法国的巴黎是不同的城市。所以现在我这样做:

In [13]: df['col_a_b'] = df['col_a'] + ' - ' + df['col_b']

In [14]: df
Out[14]:
    col_a    col_b  col_c  col_d         col_a_b
0  France    Paris      3      4  France - Paris
1      UK    Londo      4      5      UK - Londo
2      US  Chicago      5      6    US - Chicago
3      UK  Bristol      3      3    UK - Bristol
4      US    Paris      8      9      US - Paris
5      US   London     44      4     US - London
6      US  Chicago     12      4    US - Chicago

In [15]: df['col_a_b'].nunique()
Out[15]: 6

也许有更好的方法?无需创建额外的列。

最佳答案

通过使用ngroups

df.groupby(['col_a', 'col_b']).ngroups
Out[101]: 6

或者使用set

len(set(zip(df['col_a'],df['col_b'])))
Out[106]: 6

关于python - 如何通过 Pandas 中的两列计算唯一记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023541/

相关文章:

python - 在 Windows 中从命令行运行稳定扩散时出错

python - 求和一列值,包括 Python 中的字母

python - 分类特征留一法编码的Pandas实现

python - 通过查找 NaN 将 pandas 数据帧拆分为多个数据帧

python - 如何在 os.system 中使用 python 变量?

python - 提供的文件是陈旧的/缓存的; Python 为 fcgi + web.py + nginx

python - 如何将一行从一个 pandas 数据框复制到另一个 pandas 数据框?

r - 从两个向量创建新的 ID(双向)

python - 索引错误: indices out of the bound

python - 使用 pandas 从数据框中删除空间