代码之家  ›  专栏  ›  技术社区  ›  Cyrus Mohammadian

如何将panda系列筛选为仅包含数字字符0-9的元素,并获取这些元素的索引?

  •  -1
  • Cyrus Mohammadian  · 技术社区  · 3 年前

    如何将panda系列筛选为仅包含数字(0-9)的元素,并获取这些元素的索引?

    import pandas as pd, numpy as np
    
    data = np.array(['g', "1", 'e', "5", 'h'])
    df = pd.Series(data, index=['ee1', 'ee2', 'ee3', 'ee4', 'ee5'])
    

    例如,我想访问 ee2 和 ee4 像 ['ee2', 'ee4'] 。

    2 回复  |  直到 3 年前
        1
  •  3
  •   Mark    3 年前
    df[df.str.isnumeric()].index
    

    输出:

    Index(['ee2', 'ee4'], dtype='object')
    
        2
  •  0
  •   Hackaholic    3 年前

    布尔掩码将为您完成任务。 要理解,请运行以下语句

     df.str.isdigit()
    Out[240]:
    ee1    False
    ee2     True
    ee3    False
    ee4     True
    ee5    False
    dtype: bool
    

    让我们将此掩码传递给序列

    df[df.str.isdigit()]                                                                                                                                                                                           
    Out[239]:                                                                                                                                                                                                              
    ee2    1                                                                                                                                                                                                          
    ee4    5                                                                                                                                                                                                        
    dtype: object
    

    您还可以使用@mozway建议的以下代码

    df.index[df.str.isnumeric()]