python - 如何在 Pandas 中对两列进行区分?

标签 python pandas

我有一个数据框如下:

>>> df
     0   1   2    3  4  5
  0  1   2   3  1.0  A  B
  1  2   5   6  1.0  A  B
  2  1   7   8  NaN  C  A
  3  2  10  11  1.0  B  B

我想计算第 0 列中每个值相对于两列(4 和 5)的唯一值出现的次数。例如,在上述情况下,输出将是这样的

     0   1   
  0  1   3   
  1  2   2   

因为对于第 0 列中的值 1,第 4 列和第 5 列中的唯一值的数量是 A、B、C,而对于值 2 只有 A、B。

最佳答案

您可以groupby第 0 列,展平第 4 列和第 5 列的值,然后计算唯一值的数量:

import pandas as pd
import numpy as np
df.groupby("0")[['4', '5']].apply(lambda g: len(np.unique(g.values.flatten())))


#0
#1    3
#2    2
#dtype: int64

关于python - 如何在 Pandas 中对两列进行区分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324204/

相关文章:

python - Pandas Dataframe 到具有单独记录的 JSON 文件

python - 如何在python中搜索并获取DLL文件的目录

python - 合成子模块 : from A import B (ok) vs. 导入 A.B(错误)?

python - 如何使用 Python 中传播的方法参数覆盖错误日志记录?

python - 将每个单元格中具有 1D 数组的 2 个数据帧合并为每个单元格中具有 2D 数组的 1 个数据帧的最快操作

python - 使用正则表达式提取文件路径并将其保存在python中

python - 为什么我在 pandas 列中只得到一项(而不是多项)?

python - 将 Pandas 数据框 reshape 为与重复行一样多的列

python - 如果给定字符串与字典中的键值匹配,如何返回键

python - 如果发生这种情况,我该如何安装 PIL?