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

我有一个包含 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      COUNT

0   A           4624    203

1   A           4625    202

2   B           4624    100

3   B           4625    23

4   C           4625    2

5   D           4625    200

6   E           4624    203

7   E           4625    2022

8   F           4625    201

9   D           4625    125

10  D           4625    122

11  C           4625    3

我试图让行,其中一个DEST_NAME仅拥有ID的4625,而不是4624。所以基本上排除列中是否DEST_NAME有4624和4625条目ID。所以结果看起来像:


    DEST_NAME   ID      COUNT

0   C           4625    2

1   D           4625    200

2   F           4625    201

3   D           4625    125

4   D           4625    122

5   C           4625    3


慕桂英546537
浏览 220回答 3
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    ID4      2         C  46255    200         D  46258    201         F  4625

浮云间

尝试:df_filtered = df[df['ID'] == '4625'].copy()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python