【问题标题】:Python - find words starting and ending with vowel in dataframe columnPython - 在数据框列中查找以元音开头和结尾的单词
【发布时间】:2021-03-14 06:41:32
【问题描述】:

我试图在dataframe 列中查找以元音开头和结尾的单词。

我找不到regex 方法来 (1) 找到所有以元音开头的单词。 我只能找到以某个元音开头的单词。

这是我使用的code:-

# import the CSV file
sales_data = pd.read_csv ("data/sales-data.csv")

#Words starting with 'A'. This works
Vowels1 = sales_data[sales_data['CUSTOMERNAME'].str.startswith('A')]

#Words starting with vowel. This doesn't work. Why?
Vowels2 = sales_data[sales_data['CUSTOMERNAME'].str.startswith(r'[aeiouAEIOU]')]

如何添加以元音开头和结尾(同时)的条件?

#This should work, but it doesn't.
Vowels3 = sales_data[sales_data['CUSTOMERNAME'].str.startswith(r'^[aeiou].*[aeiou]$')]
The message I get for Vowels2 and Vowels3 is:
Empty DataFrame
Columns: [ORDERID, ORDERPRICE, ORDERDATE, STATUS, PRODUCTLINE, PRODUCTCODE, CUSTOMERNAME, CITY, COUNTRY]
Index: []

谢谢

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

    你可以在这里使用str.contains

    Vowels3 = sales_data[sales_data['CUSTOMERNAME'].str.contains(r'^[aeiou].*[aeiou]\.?$', flags=re.IGNORECASE)]
    

    【讨论】:

    • 将示例数据添加到您的问题中。
    • 感谢蒂姆,我尝试并意识到并非所有满足条件的名称都显示出来。我更改了一些代码以包含以点结尾的单词:'''Vowels = sales_data[sales_data['CUSTOMERNAME'].str.contains(r'^[aeiou].*[aeiou|\.]$', flags=re.IGNORECASE)]''' 如何设置以元音或元音+'.'结尾的条件?
    • IIUC,你想要这个正则表达式模式:^[aeiou].*[aeiou]\.?$
    • 这是您首先提到的。一些名字仍然出现,不应该出现:Australian Collectors, Co。 -> OK // 'UK Collectables, Ltd.' -> NOK 'Australian Gift Network, Co.' -> OK // 'Amica Models & Co.' -> OK// '自动关联。 &Cie。 ->好的。以元音+(点)结尾是可以的,以(点)结尾是不行的。我一直在尝试其他选择,但它们不起作用。谢谢!
    • 我给你的模式 only 匹配以元音或元音后跟点结尾的客户名称。
    【解决方案2】:

    Startswith 和 Endswith 接受元组,因此您可以使用它们:

    vowels = ('a','e','i','o','u','A','E','I','O','U')
    if myword.startswith(vowels) and myword.endswith(vowels):
        print("Yes")
    

    【讨论】:

      【解决方案3】:

      因为你只对第一个和最后一个字母感兴趣,所以你不需要regexp 开销,甚至不需要寻找序列的startwith

      相反,您可以将 lambda lam 列上的 apply 设置为:

      v = ('a','e','i','o','u','A','E','I','O','U')
      lam = lambda word: word[0] in v and word[-1] in v
      

      请注意这里不处理空字符串的情况

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 1970-01-01
        • 2015-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多