当前位置: 首页 > 知识库问答 >
问题:

如何选择其中一列中包含特定值数组的某些dataframe行?[副本]

秦晋
2023-03-14

我有以下数据集:

       import numpy as np
       array_id = np.array([2,4,7])

我有以下带有ids的数组:

       df = pd.DataFrame({'Name': ['Station', 'Sensor', 'Station', 'Sensor', 
                                   'Sensor', 'Sensor', 'Sensor'], 
                          'Type': ['analog', 'dig', 'analog', 'analog', 
                                   'analog', 'analog', 'dig'],
                          'id': [1, 2, 3, 4, 5, 6, 7]})

我想选择 id 属于 id 数组的数据帧 (df) 的列(array_id)。我希望输出是:

             Name   Type    id
           Sensor   dig     2
           Sensor   analog  4
           Sensor   dig     7

我设法实现了执行此操作的代码,但我需要使用两个for():

      d = {'Name', 'Type', 'id'}

      df_aux = pd.DataFrame(d)
      df_select = pd.DataFrame(d)

      for i in range(0, len(df)):    
          for j in range(0, len(array_id)):
    
              if(df['id'].iloc[i] == array_id[j]):
    
                  array_aux = [(df['Name'].iloc[i], 
                                df['Type'].iloc[i], 
                                df['id'].iloc[i])]        
    
                  df_aux = pd.DataFrame(array_aux, columns = ['Name', 'Type', 'id'])
   
                  df_select = pd.concat([df_select, df_aux])

输出为:

      print(df_select)

        0     Name      Type    id
       id     NaN       NaN     NaN
       Type   NaN       NaN     NaN
       Name   NaN       NaN     NaN
        NaN   Sensor    dig     2.0
        NaN   Sensor    analog  4.0
        NaN   Sensor    dig     7.0

我想学习一种不需要使用两个for()的方法,并且(df_select)的输出不会与NaN一起出现。有没有办法解决这个问题?

共有1个答案

诸葛利
2023-03-14

使用Series的isin方法。

df.loc[df['id'].isin(array_id), :]
 类似资料:
  • 我有一个带有数组列的数据帧: 我读了这个CSV,并将“类”列的值转换成数组: 现在我想选择“类”值中具有“performer_0”的行。像这样: 但是这个代码不起作用: 回溯(最后一次调用):文件“d:\pyenv\pandas\lib\site packages\pandas\core\indexes\base.py”,第2657行,在get_loc return self.\u engine.

  • 问题内容: 我正在尝试检查python列中是否包含某个值。我正在使用,我毫不怀疑它是一个很好的工具。问题是我有超过350K的行,并且输出不会显示所有的行,因此我可以查看该值是否实际包含在内。简而言之,我只想知道(Y / N)列中是否包含特定值。我的代码如下: 问题答案: 我认为如果需要行,其中column的值包含string : 或者,如果的列是: 如果要检查 列中的最后4位数字: 样品:

  • 这是我的密码: 它返回表中所有列的数组。但我不需要把所有的专栏都写下来。我只需要返回以下列:。我对此进行了搜索并找到了答案:(使用函数) 但它并没有返回预期的结果。它返回以下内容: 如您所见,没有和列。我怎样才能修好它?

  • 我有如下数据帧。 输入 输出 这怎么能在python中完成

  • 我有一个25列的数据帧和一个数组([2,4,8,10,11,12,13,14,17,18,19,20,21,22,23],dtype=int64)。我想从dataframe中选择一些特定的列,这些列的索引由数组的元素给出,并将它们存储在一个新的dataframe中(比如df1)。例如,新数据帧将有原始数据帧的第2、第4、第23列。

  • 我有一个熊猫数据框,看起来像这样: 下面是一个列表: 如何删除熊猫数据帧中包含列表中给定字符串的每一行? 所需的输出应如下所示: