Pandas Python有条件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)
d = [{'Number':'0001',  'Name':'A','Course':'Eng','Score':81 },{'Number':'0001',  'Name':'A','Course':'Geo','Score':75},
       {'Number':'0002',  'Name':'B','Course':'Eng','Score': 76} , {'Number':'0002',  'Name':'B','Course':'Geo','Score':90 },
    {'Number':'0003',  'Name':'C','Course':'Eng','Score':81 },{'Number':'0003',  'Name':'C','Course':'Geo','Score':100, },
     {'Number':'0003',  'Name':'C','Course':'Bio','Score':90 }]


data = pd.DataFrame(d, index=[1,2,3,4,5,6,7])
data

Course  Name    Number  Score
1   Eng A   0001    81
2   Geo A   0001    75
3   Eng B   0002    76
4   Geo B   0002    90
5   Eng C   0003    81
6   Geo C   0003    100
7   Bio C   0003    90

我想要的只返回名字C,因为C是唯一一个每个科目得分超过80的人

提问于
用户回答回答于

你可以用transformunique

data.loc[data.groupby('Name')['Score'].transform('min')>80].Name.unique()

输出:

array(['C'], dtype=object)
用户回答回答于

groupby就是你想要的

grouped = data.groupby('Name').min()
print(grouped.loc[grouped['Score']>80].index[0])

这会给你

Out[1]: ['C']

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问12 回答
  • 四无君

    0 粉丝0 提问3 回答
  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问2 回答
  • o o

    3 粉丝490 提问2 回答

扫码关注云+社区

领取腾讯云代金券