【问题标题】:Trimming specifc words in a dataframe修剪数据框中的特定单词
【发布时间】:2021-09-14 17:34:36
【问题描述】:

我有一个带有一些三元组(以及更多 ngram)的 df,我想检查句子是否以特定单词列表开头或结尾,并将它们从我的 df 中删除。例如:

import pandas as pd
df = pd.DataFrame({'Trigrams+': ['because of tuna', 'to your family', 'pay to you', 'give you in','happy birthday to you'], 'Count': [10,9,8,7,5]})

list_remove = ['of','in','to', 'a']

print(df)

    Trigrams+            Count
0   because of tuna       10
1   to your family         9
2   pay to you             8
3   give you in            7
4   happy birthday to you  5

我尝试使用strip,但在上面的示例中,第一行会返回因为 tun

输出应该是这样的:

list_remove = ['of','in','to', 'a']

    Trigrams+             Count
0   because of tuna        10
1   pay to you              8
2   happy birthday to you   5

有人可以帮我吗?提前致谢!

【问题讨论】:

    标签: python pandas string data-cleaning trim


    【解决方案1】:

    试试:

    list_remove = ["of", "in", "to", "a"]
    
    tmp = df["Trigrams+"].str.split()
    
    df = df[~(tmp.str[0].isin(list_remove) | tmp.str[-1].isin(list_remove))]
    print(df)
    

    打印:

                   Trigrams+  Count
    0        because of tuna     10
    2             pay to you      8
    4  happy birthday to you      5
    

    【讨论】:

      【解决方案2】:

      你可以试试这样的:

      import numpy as np
      
      def func(x):
        y = x.split()[0]
        z = x.split()[-1]
        if (y in list_remove) or (z in list_remove):
           return np.nan
        return x
      
      df['Trigrams+'] = df['Trigrams+'].apply(lambda x:func(x))
      df = df.dropna().reset_index(drop=True)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 2012-01-24
        相关资源
        最近更新 更多