【问题标题】:Python pandas fuzzy logicPython pandas 模糊逻辑
【发布时间】:2017-02-23 22:49:21
【问题描述】:

我目前有一个需要加入模糊逻辑的数据集。 Dataframe df1 是较小的参考表,大约有 10 个观察值。数据框 df2 是我的主要数据框,有大约 2000 个观察值,需要执行模糊逻辑连接。我在下面介绍示例和我的尝试。

import difflib
df1 = pd.DataFrame({'number':[1,2,3,4,5],'not_shifted':['one','two','three','four','five']})
df2 = pd.DataFrame({'values':[['test'],['a'],['b'],['c'],['d'],['e'],['f'],['f'],['f']],'not_shifted':[np.nan,'one','too','three','fours','five','six',np.nan,'one']})

# my approach
df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1['not_shifted'])[0])

我收到以下错误: 列表超出范围

TypeError: 'float' object is not utterable

如果我用其他东西替换 np.nan,我会得到另一个错误:

列表超出范围

【问题讨论】:

    标签: python pandas fuzzy-logic


    【解决方案1】:

    你会得到TypeError,因为数据框 df2 有 nan 值,你必须删除它。

    另一个问题:df1 没有“六”的规则,df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1['not_shifted'])[0]) 生成错误List out of range,因为其中一个列表为空。

    你的代码看起来像(或者你可以使用 your_approach,如果你在 df1 中添加“六”的规则)。

    import pandas as pd
    import numpy as np
    import difflib
    
    df1 = pd.DataFrame({'number':[1,2,3,4,5],'not_shifted':['one','two','three','four','five']})
    df2 = pd.DataFrame({'values':[['test'],['a'],['b'],['c'],['d'],['e'],['f'],['f'],['f']],'not_shifted':[np.nan,'one','too','three','fours','five','six',np.nan,'one']})
    
    # Drop nan value
    df2=df2.dropna()
    
    # You cat write [0] because df1 does not have 'six'
    df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1['not_shifted']))
    print df2
    

    输出:

      not_shifted values
    1       [one]    [a]
    2       [two]    [b]
    3     [three]    [c]
    4      [four]    [d]
    5      [five]    [e]
    6          []    [f]
    8       [one]    [f]
    

    【讨论】:

    • 您好,Serenity,感谢您的快速响应和解决方案:)
    • 您好 Serenity,我如何摆脱数据框中的方括号。答案是正确的,但是,解决方案中的方括号引起了一些混乱。在此数据框中定义列表的目的是什么?谢谢。
    猜你喜欢
    • 2023-03-10
    • 2023-04-11
    • 1970-01-01
    • 2016-03-17
    • 2011-05-17
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多