【问题标题】:pandas: match substring from a column in dataframe with another dataframe column熊猫:将数据框中列的子字符串与另一个数据框列匹配
【发布时间】:2021-11-15 20:13:38
【问题描述】:

我有两个数据框,如下所示,但行数更多:

data = {'First':  [['First', 'value'],['second','value'],['third','value','is'],['fourth','value','is']],
'Second': [['adj','noun'],['adj','noun'],['adj','noun','verb'],['adj','noun','verb']]}

df = pd.DataFrame (data, columns = ['First','Second'])

data2 = {'example':  ['First value is important', 'second value is imprtant too','it us goof to know']}

df2 = pd.DataFrame (data2, columns = ['example'])

我写了一个函数,检查示例列中的第一个单词是否可以在第一个数据帧的第一列中找到,如果为真则返回字符串,如下所示:

def reader():
    for l in [l for l in df2.example]:
        if df["first"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
           return l

但是,我意识到它不起作用,因为 df 中的第一列是字符串列表,所以我进行了以下修改:

def reader():
    for l in [l for l in df2.example]:
        df['first_unlist'] = [','.join(map(str, l)) for l in df.First]
        if df["first_unlist"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
            return l

但是,当我运行该函数时,我仍然得到“无”,我无法弄清楚这里出了什么问题。

更新:

我希望函数返回示例列中的前两个字符串,“第一个值很重要”,“第二个值也很重要”

【问题讨论】:

    标签: python pandas string dataframe match


    【解决方案1】:

    当找不到示例列中的第一个单词时,您的函数不会返回 False。这是修订版。

    def reader():
        for l in [l for l in df2.example]:
            df['first_unlist'] = [','.join(map(str, l)) for l in df.First]
       
            if df["first_unlist"].str.contains(pat=l.split(' ', 1)[0]).any() is True:
                return l
        return list(df2.example[:2])
    
    reader()
    

    【讨论】:

    • 感谢您的回复。但我不想返回 False,但我想将示例列中的第一个和第二个字符串作为正确的值。
    • ['First value is important', 'second value is imprtant too'] 是预期的输出吗?
    • 是的,我想我应该创建一个列表来保存它们并返回列表,对吗?
    • 你可以试试我的新答案。我已经更新了。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2022-01-23
    • 2018-07-02
    • 2018-04-26
    • 2018-07-10
    相关资源
    最近更新 更多