【发布时间】:2017-07-26 02:25:24
【问题描述】:
我有一个元组列表:
tups = [("A","a"), ("A","b"), ("A", "c"), ("B", "a"), ("B", "b"), ("C", "a"), ("L", "a")]
我想计算某事。就像每个元组的组 ID。 IE。 (伪代码):
("A", "a") --> 11
("A", "b") --> 12
("A", "c") --> 13
("B", "a") --> 21
("B", "b") --> 22
("C", "a") --> 31
("L", "a") --> 121
我试图将我的元组转换为具有多索引的 pandas df,但我不知道如何计算 id。我只发现了 DataFrameGroupBy.grouper 类的一种相当晦涩的方法。有人吗?
编辑
实际的元组包含一个 locationname-streetname 对,即("Summervillage", "Longstreet")。因此,相同的位置应该有一个 id,街道名称也是如此。 group-id 应该是两者的组合。我不确定如何进一步澄清这一点。
编辑 2
由于不鼓励在 stackoverflow 上删除带有答案的问题,因此进行另一个编辑:
("Summervillage", "Longstreet") --> id 1_1
("Summervillage", "Shortstreet") --> id 1_2
("Summervillage", "Nicestreet") --> id 1_3
("Wintertown", "Somestreet") --> id 2_1
("Wintertown", "Midstreet") --> id 2_2
("Bigcity", "Darkalley") --> id 3_1
因此,group-id 应该为每个城市包含一个数字,为每个城市的每条独特街道包含一个数字。
【问题讨论】:
-
这些“id”到底是什么?任意数字?
-
不清楚你在问什么,但我认为你需要类似
Hoffman Code -
从给出的例子中,我相信第一个位置是大写字母,第二个是小写字母。 ID 是通过“连接”每个字母的位置构成的,因此 ("L", "a") 是 121,因为 L 是字母表中的第 12 个字母,而 a 是第一个。编辑添加:我们不会有 ID-collision with ID 121 也可能是 ("A", "v") 也许这需要重新思考...
-
@seventyeightist 在编码后我们会遇到歧义,因为 121 可能是 la 或 au(12-1 或 1-21)
-
@TemporalWolf 是的,但鉴于提供的示例 (imo),这是唯一有意义的编码。因此我对 ID-collision 的评论!
标签: python