【问题标题】:pandas create a new column by checking a listpandas 通过检查列表创建一个新列
【发布时间】:2019-01-12 16:46:35
【问题描述】:

我有一个包含 4 列 A、B、C、D 和一个列表的数据框。我需要使用 B、C、D 列和列表创建列,如下面的输出部分所示。

hier_List= [[pages2 , book1  , paper3] , [pen1 , rifle2 , ink3] , [words1 ,book2, ink3]]

必须使用上述列表创建列。

数据框:

A      B       C        D      
C_1     1971   book1    nan    
C_1     1971   pages2   pages2  
C_1     1970   book1    nan     
C_1     1972   book1    nan    
C_1     1973   letters4 nan    

输出:

对于每一行,我应该检查 C 列值是否存在于 hier_list 的任何子列表中。如果存在则标记是,否则否。

 A      B       C        D       is_present_any_list
C_1     1971   book1    nan        yes  
C_1     1971   pages2   pages2     yes 
C_1     1970   book1    nan        yes  
C_1     1972   book1    nan        yes  
C_1     1973   letters4 nan        no   

我不知道该怎么做,请帮助我,如果您需要进一步说明,请告诉我。

【问题讨论】:

    标签: python pandas numpy pivot pandas-groupby


    【解决方案1】:

    将numpy.where 与isin 一起使用,并将嵌套列表与numpy.concatenate 一起使用:

    df['is_present_any_list'] = np.where(df['C'].isin(np.concatenate(hier_List)), 'yes', 'no')
    print (df)
         A     B         C       D is_present_any_list
    0  C_1  1971     book1     NaN                 yes
    1  C_1  1971    pages2  pages2                 yes
    2  C_1  1970     book1     NaN                 yes
    3  C_1  1972     book1     NaN                 yes
    4  C_1  1973  letters4     NaN                  no
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      相关资源
      最近更新 更多