gpt4 book ai didi

python - Pandas : determine mapping from unique rows to original dataframe

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:25 25 4
gpt4 key购买 nike

给定以下输入:

In [18]: input
Out[18]:
1 2 3 4
0 1 5 9 1
1 2 6 10 2
2 1 5 9 1
3 1 5 9 1

In [26]: df = input.drop_duplicates()
Out[26]:
1 2 3 4
0 1 5 9 1
1 2 6 10 2

我将如何获取一个数组,该数组具有等效子集中行的索引,例如:

resultant = [0, 1, 0, 0] 

即这里的“1”基本上是在说明(输入中的行 [1])==(df 中的行 [1])。由于唯一行的数量少于“结果”中的多个值,这些值等同于 df 中的相似值。即(输入中的行[k] == 输入中的行[k+N])==(df 中的行[1])可能是一种情况。

我正在寻找来自输入的实际行号映射:df。

虽然这个例子在我的例子中是微不足道的,但是作为一个例子,我有大量可能映射到一个索引的丢弃映射。

我为什么要这个?我正在训练目标序列不唯一的自动编码器类型系统。

最佳答案

一种方法是将其视为所有列上的 groupby:

>> df.groupby(list(df.columns)).groups
{(1, 5, 9, 1): [0, 2, 3], (2, 6, 10, 2): [1]}

另一种方法是先排序然后比较,这在理论上效率较低,但在某些情况下可能会更快,而且绝对更容易容错:

>>> ds = df.sort(list(df.columns))
>>> eqs = (ds != ds.shift()).all(axis=1).cumsum()
>>> ds.index.groupby(eqs)
{1: [0, 2, 3], 2: [1]}

这对我来说似乎是正确的数据结构,但如果你真的想要一个包含组 ID 的数组,那也很容易,例如

>>> eqs.sort_index() - 1
0 0
1 1
2 0
3 0
dtype: int64

关于python - Pandas : determine mapping from unique rows to original dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com