【问题标题】:Creating new column in pandas using existing column values as filter using pandas - .isin() fails as Attribute Error使用现有列值作为过滤器在 pandas 中创建新列 - .isin() 因属性错误而失败
【发布时间】:2022-01-02 14:20:38
【问题描述】:

错误:AttributeError:“int”对象没有属性“isin”

问题:没有空值,在单独的代码块中工作。尝试将R系列的数据类型修改为对象,报错:'str' object has no attribute 'isin'

我错过了什么?

代码:

    X = [1, 2, 3, 4]
    if dg['RFM_Segment'] == '111':
        return 'Core'
    elif (dg['R'].isin(X) & dg['F'].isin([1]) & dg['M'].isin(X) & (dg['RFM_Segment'] != '111')).any():
        return 'Loyal'
    elif (dg['R'].isin(X) & dg['F'].isin(X) & dg['M'].isin([1]) & (dg['RFM_Segment'] != '111')).any():
        return 'Whales'
    elif (dg['R'].isin(X) & dg['F'].isin([1]) & dg['M'].isin([3,4])).any():
        return 'Promising'
    elif (dg['R'].isin([1]) & dg['F'].isin([4]) & dg['M'].isin(X)).any():
        return 'Rookies'
    elif (dg['R'].isin([4]) & dg['F'].isin([4]) & dg['M'].isin(X)).any():
        return 'Slipping'
    else:
        return 'NA'
    
dg['user_segment']= dg.apply(user_segment, axis= 1)

【问题讨论】:

    标签: pandas dataframe isin


    【解决方案1】:

    我假设您不小心切断了代码片段的顶部,您在其中定义了user_segment

    问题在于您尝试使用apply 的方式。请注意,apply 将在Series 上运行,而不是DataFrame。因此,通过索引到系列的任何元素,您将不会收到 Series 对象(就像在索引到 DataFrame 时一样),而是给定列类型的对象(例如 int、@987654328 @ ETC。)。一个例子:

    import pandas as pd
    
    X = ['a', 'c']
    df = pd.DataFrame([['a', 'b'], ['c', 'd'], ['e', 'f']], columns=['col1', 'col2'])
    df['col1'].isin(X)  # this works, because I'm applying `isin` on the entire column.
    
    
    def test_apply(x):
        print(x['col1'].isin(X))
        return x
    
    df.apply(test_apply, axis=1)  # this doesn't work, 
                                  # because I'm applying `isin` on a non-pandas object, in 
                                  # this example `str`
    
    

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2018-02-12
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      相关资源
      最近更新 更多