【问题标题】:How can I check if a column in Pandas has a string with different case choices?如何检查 Pandas 中的列是否具有不同大小写选择的字符串?
【发布时间】:2020-07-29 06:22:43
【问题描述】:

我知道如何检查 pandas 中的列是否具有特定字符串,就像在帖子 Check if certain value is contained in a dataframe column in pandas 中解释的那样。但是,我想计算包含具有某些可变性的特定字符串的行数。例如,我不仅要检查该行是否包含葡萄牙,还要检查它是否包含 PORTUGAL 或葡萄牙。有没有办法做到这一点?

这就是我停下来的地方(我不仅尝试计算,还尝试查看 %):

df[df['column'].str.contains('Portugal')].shape[0]/df['column'].shape[0]

【问题讨论】:

    标签: python pandas string dataframe


    【解决方案1】:
    • 将整个列转换为单个案例(例如lowercase)并搜索一个变体更容易。
      • 这也有利于进一步类型的 NLP 分析。
      • 其他情况包括:
        1. .capitalize: 'Portugal'
        2. .upper: 'PORTUGAL'
    • YOBEN_Ssolution 应该用于不希望将整列转换为一种情况的情况。
    import pandas as pd
    
    # test data
    data = {'Country': ['PORTUGAL', 'ENGLAND', 'FRANCE', 'GERMANY', 'Portugal', 'SPAIN', 'SPAIN', 'portugal', 'ITALY', 'NETHERLANDS', 'PORTUGAL', 'ITALY', 'RUSSIA']}
    
    # setup dataframe
    df = pd.DataFrame(data)
    
    # cast Country to lowercase
    df['Country'] = df['Country'].str.lower()
    
    # search for desired string with contains
    portugal = df[df['Country'].str.contains('portugal')]
    
    # display(portugal)
         Country
    0   portugal
    4   portugal
    7   portugal
    10  portugal
    

    【讨论】:

      【解决方案2】:

      你可以传case=False

      sub = df[df['Country'].str.contains('portugal',case=False)]
      sub
      Out[48]: 
           Country
      0   PORTUGAL
      4   Portugal
      7   portugal
      10  PORTUGAL
      

      【讨论】:

        【解决方案3】:

        @Trenton McKinney 和@YOBEN_S 都可以。不过,另一种 pythonic 方式是请使用?aiLmsux: regex flags。在这种情况下,暗示不区分大小写的标志 i。只要拼写正确,葡萄牙语的输入方式无关紧要。

        df[df.Country.str.contains('(?i:Portugal)')]
        
        
        
         Country
        0   PORTUGAL
        4   Portugal
        7   portugal
        10  PORTUGAL
        

        【讨论】:

          【解决方案4】:

          您可以创建嵌套的 if 语句来检查是否区分大小写。

          由于默认 pandas 区分大小写,因此如果您搜索“PORTUGAL”而不是“portugal”,您可以获得想要的行为。

          【讨论】:

            猜你喜欢
            • 2021-12-17
            • 2019-04-20
            • 2015-02-08
            • 1970-01-01
            • 2021-12-23
            • 1970-01-01
            • 2020-07-16
            • 2015-01-22
            • 1970-01-01
            相关资源
            最近更新 更多