1

如何使用手动逻辑进行特征聚合,例如在大型数据帧上使用Json Logic(也对其他解决方案开放):

例如,如果我有这个数据框(实际上它是一个大 DF):

pie_df

       temp  pie_filling
    0  100  "apple"
    1  400  "apple"
    2  70  "cherry"

和这个逻辑(例如在 json 文件中),实际上逻辑文件将在不同的嵌套级别有多个聚合:

rules = { "and" : [
    {"<" : [ { "var" : "temp" }, 110 ]},
    {"==" : [ { "var" : "pie_filling" }, "apple" ] }
] }

我希望答案是:

   pie_ready
0  true
1  false
2  false

逻辑文件应该是通用且可读的。我可以将数据帧转换为 json,但我担心这不会在计算上有效。

我确实找到了这个包:https ://github.com/nadirizr/json-logic-py但他们没有提到在数据帧上实现逻辑

此行不起作用:

jsonLogic(rules, pie_df.to_json())

我收到此错误:

{TypeError}'dict_keys' object is not subscriptable
4

1 回答 1

0

json-logi-py不再维护,请改用此 fork:pip install json-logic-qubit

然后,您可以像这样处理您的数据框:

from json_logic import jsonLogic

rules = {
    "and": [{"<": [{"var": "temp"}, 110]}, {"==": [{"var": "pie_filling"}, "apple"]}]
}

print(
    pd.DataFrame(
        {"pie_ready": [jsonLogic(rules, row) for row in df.to_dict(orient="records")]}
    )
)

# Output
   pie_ready
0       True
1      False
2      False
于 2022-02-12T14:44:58.237 回答