- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一本代表一组产品的字典。我需要找到这些产品中的所有重复产品。如果产品具有相同的 product_type
、color
和 size
-> 它们是重复的。如果我没有遇到问题:缺少某些值,我可以轻松地按 ('product_type','color','size') 进行分组。现在我必须找到所有可能相互重复的产品组。 这意味着某些元素可以出现在多个组中。
让我举例说明:
import pandas as pd
def main():
data= {'product_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'product_type': ['shirt', 'shirt', 'shirt', 'shirt', 'shirt', 'hat', 'hat', 'hat', 'hat', 'hat', 'hat', ],
'color': [None, None, None, 'red', 'blue', None, 'blue', 'blue', 'blue', 'red', 'red', ],
'size': [None, 's', 'xl', None, None, 's', None, 's', 'xl', None, 'xl', ],
}
print(data)
if __name__ == '__main__':
main()
对于此数据:
我需要这个结果 - 每个可能组的可能重复产品的列表(仅取最大的 super 组):
例如,让我们以 id=1
为例“衬衫”该产品没有颜色或尺码,因此他可以与衬衫#2(尺寸为“s”但没有颜色)和衬衫#4(颜色为“红色”,但没有颜色)一起出现在可能的“重复组”中没有尺寸)。因此,这三件衬衫 (1,2,4) 可能是具有相同颜色“红色”和尺码“s”的重复品。
我尝试通过循环遍历缺失值的所有可能组合来实现它,但感觉错误且复杂。
有没有办法得到想要的结果?
最佳答案
您可以创建所有非 None
的可能键,然后检查哪个项目属于哪个键 - 尊重 None
:
data= {'product_id' : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
'product_type': ['shirt', 'shirt', 'shirt', 'shirt', 'shirt', 'hat',
'hat', 'hat', 'hat', 'hat', 'hat', ],
'color' : [None, None, None, 'red', 'blue', None, 'blue',
'blue', 'blue', 'red', 'red', ],
'size' : [None, 's', 'xl', None, None, 's', None, 's', 'xl', None, 'xl', ]}
from itertools import product
# create all keys without None in it
p = product((t for t in set(data['product_type']) if t),
(c for c in set(data['color']) if c),
(s for s in set(data['size']) if s))
# create the things you have in stock
inventar = list( zip(data['product_id'],data['product_type'],data['color'],data['size']))
d = {}
# order things into its categories
for cat in p:
d.setdefault(cat,set()) # uses a set to collect the IDs
for item in inventar:
TY, CO, SI = cat
ID, TYPE, COLOR, SIZE = item
# the (TYPE or TY) will substitute TY for any TYPE that is None etc.
if (TYPE or TY)==TY and (COLOR or CO)==CO and (SIZE or SI)==SI:
d[cat].add(ID)
print(d)
输出:
# category-key id's that match
{('shirt', 'blue', 's') : {1, 2, 5},
('shirt', 'blue', 'xl'): {1, 3, 5},
('shirt', 'red', 's') : {1, 2, 4},
('shirt', 'red', 'xl') : {1, 3, 4},
('hat', 'blue', 's') : {8, 6, 7},
('hat', 'blue', 'xl') : {9, 7},
('hat', 'red', 's') : {10, 6},
('hat', 'red', 'xl') : {10, 11}}
多库:
关于python - 存在缺失值时对所有可能的组进行自定义分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236331/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
我有一组标题级别(1 到 6)。我正在使用 @for 循环,但我似乎无法弄清楚如何将它们分组而不是单独分组。 这是我正在使用的@for 循环: @for $i from 1 through 6 {
我在别处读到使用版本字符串到 网址 的 XML 模式通常是不好的做法 - 出于我理解的原因。 我想知道这个咒语在使用 Marklogic DB 时是否仍然适用?我的原因是命名空间和存储 XML Mar
下面是我的代码片段,它将多部分请求发布到服务器。根据某种条件,它决定只发布一个文件或同时发布两个文件。 // Based on some condition add 1 or 2 files to t
我尝试使用Collections.sort方法对类别数组列表进行排序,但没有成功。 这是我的代码: public class Categories implements Parcelable {
JSON: "ABCD": [ { "xyz": 3, "abc": 4, "info": { "MY_TITLE": "Hello World",
我正在尝试更新我的 MySQL 数据库服务器的一些变量;我在 Windows 10 64 位 笔记本电脑上运行 Maria 版本 10.3.12。我尝试更新位于此处的 my.ini 文件: C:\Pr
有一系列的 YouTube 视频,我想嵌入而不必每次都重写嵌入代码,所以使用了 stringWithFormat 来动态插入 URL: videoHTML = [NSString stringWith
如果客户端请求的域没有有效的 CA 签名证书,并且服务器不打算支持 HTTPS 但确实支持该域的 HTTP,那么在 Web 服务器中处理此问题的最佳方法是什么。请注意,服务器确实处理其他域上的 SSL
此时我们有一个在 Linux 和 weblogic 设置上运行的 Web 应用程序。有一个本地目录/home/doc 用于存储我们应用程序中使用的文件。 目前,我们通过wls:虚拟url映射和wls:
我一直在思考这个问题,但还没有想出任何稳定/优雅的想法。 我知道使用 MyISAM 表,您可以获得表 def 更新时间,但对于 InnoDB 则不然,我发现查看 .frm 文件以了解定义何时更新甚至不
我有一个 Ruby 散列,我正在将其转换为 to_json 并传递给 View 。然后 JavaScript 解析 JSON (JSON.parse) 并对其进行迭代,生成键值对。如何对散列进行排序,
我正在使用 org.json 库中可用的转换函数将 json 转换为 xml。这样做非常简单。 String xmlStr = XML.toString(new JSONObject(jsonStr)
我的 View 模型拥有一个非常简单的 recyclerview 适配器 当我尝试向它发送消息(进而调用 notifyDatasetChanged )时,它会抛出这样的异常 java.lang.Nul
我按以下方式设置了 GridView: 绑定(bind)到List在代码隐藏中(我正在使用我自己的自定义 BOL) HTML 页面上没有数据源对象 可对我选择的每一列进行排序(SortExpressi
假设我想测试用户是否能够填写表单来创建新项目。我需要访问的路由是:new_user_project_path(:user_id)。 所以,我的特征 rspec 现在看起来像这样: feature "U
我有一个 linux 机器,我在上面编译并安装了更新版本的 GCC (4.3.9),它位于/usr/lib 中。 我使用此编译器构建了一组库,并将其捆绑到 RPM 中,但是当我尝试安装该 RPM 时,
@DependsOn(value="userService") public class AuthcRealm implements Realm { @Autowired @Lazy(value=fa
我的团队最近更新了我的网站 www.uksoccershop.com,以使用 timthumb 显示图像缩略图。这已经成功完成,但是从 Google 图片中丢失 SEO 流量的问题迫在眉睫。恐怕 Go
我试图构建一个 kd 树来搜索一组点,但我对维基百科文章中“中位数”的使用感到困惑。为了便于使用,维基百科文章将构造kd-tree的伪代码表述为: function kdtree (list of p
我是一名优秀的程序员,十分优秀!