【问题标题】:Checking if a data series is strings检查数据系列是否为字符串
【发布时间】:2017-04-04 02:57:48
【问题描述】:

我想检查数据框中的列是否包含字符串。我原以为这可以通过检查 dtype 来完成,但事实并非如此。包含字符串的 pandas 系列只有 dtype 'object',它也用于其他数据结构(如列表):

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]})

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]})
print(df['a'].dtype)
print(df['b'].dtype)
print(df['c'].dtype)

生产:

int64
object
object

有没有办法检查一列是否只包含字符串?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用它来查看列中的所有元素是否都是字符串

    df.applymap(type).eq(str).all()
    
    a    False
    b     True
    c    False
    dtype: bool
    

    只检查是否有字符串

    df.applymap(type).eq(str).any()
    

    【讨论】:

      【解决方案2】:

      您可以使用一个函数映射数据,该函数将所有元素转换为 True 或 False(如果它们等于 str-type),然后只需检查列表是否包含任何 False 元素

      下面的示例测试包含除 str 之外的元素的列表。如果存在其他类型的数据,它将告诉您True

      test = [1, 2, '3']
      False in map((lambda x: type(x) == str), test)
      

      输出:True

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-28
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多