【问题标题】:How to select a part of a dataframe according to a list? [duplicate]如何根据列表选择数据框的一部分? [复制]
【发布时间】:2022-01-10 19:21:57
【问题描述】:

我有以下数据框:

      import pandas as pd

      df = pd.DataFrame({'Name': ['MEXICO', 'CANADA', 'CANADA', 'PORTUGAL', 'ESPANHA', 
                                  'BRASIL', 'BRASIL', 'MEXICO'],                   
                         'Column_two': [1,2,3,4,5,6,7,8]                  
                         })

      print(df)

      # Output:

                  Name      Column_two
                 MEXICO        1
                 CANADA        2
                 CANADA        3
                PORTUGAL       4
                 ESPANHA       5
                  BRASIL       6
                  BRASIL       7
                  MEXICO       8

我有以下列表,其中包含一些位于美国的城市:

      list_americ = ['MEXICO', 'CANADA', 'BRASIL']

我只想在数据框中保留 list_americ 中国家/地区的“名称”。所以我尝试执行以下代码:

     for correct_name in list_americ:
          df['Name'] = df['Name'].apply(lambda x: correct_name if correct_name == df['Name'] 
                       else x)

此代码产生以下错误:

      ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我希望输出是:

                  Name      Column_two
                 MEXICO        1
                 CANADA        2
                 CANADA        3
                  BRASIL       6
                  BRASIL       7
                  MEXICO       8

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用df.loc:

    df.loc[df['Name'].isin(list_americ)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2014-10-20
      • 2015-10-11
      • 2021-09-08
      相关资源
      最近更新 更多