如何识别和标记熊猫数据框中的相似行

Posted

技术标签:

【中文标题】如何识别和标记熊猫数据框中的相似行【英文标题】:How to identify and label similar rows in a pandas data frame 【发布时间】:2016-10-23 06:48:43 【问题描述】:

我正在处理一个由两个熊猫数据框组成的大型数据集。其中一个是从仪器上进行的测量,另一个是每次测量时出现的变量。目标是使用一些监督学习方法来预测给定测量值的变量。在我使用过的任何监督学习方法(例如 scikit learn 的随机森林分类器)中,我还没有找到一种将多个变量用作“标签”或 y 值的方法。

作为一种解决方法,我试图通过创建一个指示相似行的新列来一次仅预测一个或两个变量。这样我就可以只将一个实际上代表两个的变量输入到学习方法中

我从什么开始:

   a    b
0  1  103
1  6  103
2  1   103
3  2   2
4  3   103
5  6   103
6  1   103
7  5   103
8  1    2
9  2    2

我想要什么:

   c    
0  1
1  2
2  1
3  3
4  4
5  2
6  1
7  5   
8  6
9  3

如果您知道如何使用多个标签或 y 变量进行监督学习,那也会很有帮助。

【问题讨论】:

很不清楚你在这里问什么。在您更好地描述您的问题之前,您不太可能得到一个好的答案。 欢迎来到 Stack Overflow。这不是一个we-write-your-code服务,你必须付出一些努力。 【参考方案1】:

您的问题确实需要澄清,但由于它们是 MIA,我会提前假设。

假设

左侧的列来自列表列表。我将其命名为“alist_oflists”。 每次找到唯一的内部列表时,都会为其赋予一个新的整数类型标识符。 输出可以再次简单地是列表列表,内部列表是包含之前找到的 ID 的单个项目列表。两个列表的顺序必须匹配。
alist_oflists = [[1, 1000], [2, 10], [2, 100], [2, 10], [3, 1000], [2, 100], [2, 10]]

# we need tuples instead of lists cause lists are not hashable (will be used as dict keys)
alist_oftuples = [tuple(x) for x in alist_oflists]

print(alist_oftuples) # prints:[(1, 1000), (2, 10), (2, 100), (2, 10), (3, 1000), (2, 100), (2, 10)]

a_dict = 
i = 1
for items in alist_oftuples:
    if items in a_dict.keys():
        continue
    else:
        a_dict[items] = i
        i += 1

i_wanna_see_results = []
for item in alist_oftuples:
    i_wanna_see_results.append(a_dict[item])

print(i_wanna_see_results) # prints: [1, 2, 3, 2, 4, 3, 2]

这是你想要的吗?

【讨论】:

以上是关于如何识别和标记熊猫数据框中的相似行的主要内容,如果未能解决你的问题,请参考以下文章

如何从熊猫数据框中的当前行中减去前一行并将其应用于每一行;不使用循环?

如何摆脱我们熊猫数据框中的相等列?

删除数据框熊猫python中的重复和最相似

如何根据 R 中的行标记数据框中的所有变量

如何识别从今天到过去和未来(不包括周末)的三个工作日,并将它们放入熊猫数据框中?

如何计算熊猫数据框中的元音和辅音(大写和小写)?