【问题标题】:Python - np.Where conditionPython - np.Where 条件
【发布时间】:2021-12-18 09:36:19
【问题描述】:

我正在使用 pandas,我有这张桌子(产品)

id quantity type
1 18 pack
2 pack 3
3 6 pack
4 pack 6
5 6 9

我想做一个 when 条件来帮助我整理出错误的插入信息

id quantity type
1 18 pack
2 3 pack
3 6 pack
4 6 pack
5 6 9

我会在 SQL Server 上简单地使用 ISNUMERIC(),如何在 Python 上实现这一点?

我试过了

np.where(np.isnumeric(type),prod['quantity'],prod['type'))

对我做错了什么有任何反馈吗?

谢谢!

【问题讨论】:

    标签: python pandas dataframe numpy jupyter-notebook


    【解决方案1】:
    prod = pd.DataFrame({'quantity': [18, 'pack', 6, 'pack', 6], 'type': ['pack', 3, 'pack', 6, 9]}, index=[1, 2, 3, 4, 5])
    prod.index.name = 'id'
    
    cond = prod.type.astype(str).str.isnumeric() & ~prod.quantity.astype(str).str.isnumeric()
    # or 
    # cond = prod.quantity.map(lambda x: isinstance(x, str))  # to swap if some values in the 'quantity' column is str
    prod.loc[cond, ['type', 'quantity']] = prod.loc[cond, ['quantity', 'type']].values # based on https://stackoverflow.com/a/25792812/15035314
    print(prod)
    

    输出:

       quantity  type
    id               
    1        18  pack
    2         3  pack
    3         6  pack
    4         6  pack
    5         6     9
    

    【讨论】:

    • 第一个选项不会返回任何东西,第二个选项一直告诉我'''float'对象没有属性'isnumeric''':(
    • 已编辑,查看最新版本
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2022-06-13
    • 2020-04-02
    • 1970-01-01
    • 2017-11-18
    • 2022-12-02
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多