python - Pandas 选择包含两个值(包括)的行

标签 python pandas jupyter-notebook

我试图只选择具有这两个值的行。

例如,我试图只选择一个同时在耳朵列上有右耳和左耳的患者。

在这种情况下,只有 Lisa

这是我试图获取正确数据的代码。

import pandas as pd

data = {'name': ['Lisa', 'Lisa', 'Mac', 'Intosh'],
    'ear': ['Right','Left','Right','Left']
   }

df = pd.DataFrame(data, columns = ['name', 'ear'])
df.loc[(df['name'] == 'Right') & (df['ear'] == 'Left')]
df

enter image description here

代码检索每个人,但我试图只获取第 0 行和第 1 行,因为 Lisa 有右耳和左耳。

最佳答案

您的解决方案实际上需要使用 groupbynunique:

df[df.groupby('name')['ear'].transform('nunique') == df['ear'].nunique()]

   name    ear
0  Lisa  Right
1  Lisa   Left

假设人类只有两只耳朵,你可以简化这个;)

df[df.groupby('name')['ear'].transform('nunique').eq(2)]

   name    ear
0  Lisa  Right
1  Lisa   Left

详情
groupby 将计算与名称相关的(唯一)耳朵条目的数量:

df.groupby('name')['ear'].transform('nunique')

0    2
1    2
2    1
3    1
Name: ear, dtype: int64

(前两行属于Lisa。)结果广播到原始帧。

然后检查哪些行的唯一计数为 2,并相应地进行选择。

关于python - Pandas 选择包含两个值(包括)的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56156866/

相关文章:

python - Google Colab - Spotipy 没有将我重定向到指定的redirect_uri

python - 使用 Pandas 拆分数据

python - PySpark安装错误

python - TensorFlow 2.0 GradientTape 返回 None 作为手动模型的梯度

python - 子进程.Popen : 'OSError: [Errno 13] Permission denied' only on Linux

python - 如何设置 Pandas 提取某些列的某些行并将它们堆叠在一起?

python - Anderson darling test 在 Python 中给了我无穷大的分数

python - 使用 Pandas 在单独的列中标记重复项

python - PyVISA-无法使GPIB仪器以编程方式进入REMOTE模式

python - 在我的 Mac 上以 root 身份运行 pip 时出现 "Permission Denied"