我试图只选择具有这两个值的行。
例如,我试图只选择一个同时在耳朵列上有右耳和左耳的患者。
在这种情况下,只有 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
代码检索每个人,但我试图只获取第 0 行和第 1 行,因为 Lisa 有右耳和左耳。
最佳答案
您的解决方案实际上需要使用 groupby
和 nunique
:
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/