为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 只选择列中唯一字符串在另一列中只有一个特定字符串的行

Pandas 只选择列中唯一字符串在另一列中只有一个特定字符串的行

慕桂英546537 2021-10-26 10:41:22
我有一个包含 3 列的 Pandas 数据框:df = pd.DataFrame({'DEST_NAME':['A','A','B','B','C','D','E','E','F'],                   'ID':['4624','4625','4624','4625','4625','4625','4624','4625','4625'],                   'COUNT':[203,202,100,23,2,200,203,2022,201]})    DEST_NAME   ID      COUNT0   A           4624    2031   A           4625    2022   B           4624    1003   B           4625    234   C           4625    25   D           4625    2006   E           4624    2037   E           4625    20228   F           4625    2019   D           4625    12510  D           4625    12211  C           4625    3我试图让行,其中一个DEST_NAME仅拥有ID的4625,而不是4624。所以基本上排除列中是否DEST_NAME有4624和4625条目ID。所以结果看起来像:    DEST_NAME   ID      COUNT0   C           4625    21   D           4625    2002   F           4625    2013   D           4625    1254   D           4625    1225   C           4625    3
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以提取范围内和范围外的DEST_NAMEs。然后使用pd.Series.isin并结合您的两个条件:


ids_inc = df.loc[df['ID'] == '4625', 'DEST_NAME']

ids_exc = df.loc[df['ID'] == '4624', 'DEST_NAME']


res = df[df['DEST_NAME'].isin(ids_inc) & ~df['DEST_NAME'].isin(ids_exc)]


print(res)


   COUNT DEST_NAME    ID

4      2         C  4625

5    200         D  4625

8    201         F  4625


查看完整回答
反对 回复 2021-10-26
?
浮云间

TA贡献1829条经验 获得超4个赞

尝试:

df_filtered = df[df['ID'] == '4625'].copy()


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信