【发布时间】:2020-11-14 00:59:08
【问题描述】:
我有一个包含许多列和行的数据框,完全未排序。我想对每一列中的行进行排序,以使每一行中的每个元素都与所有其他列中最相似的元素相邻。我知道this 解决方案,但我希望在多个列表/列之间进行比较,例如排序算法。
col1 col2 col3 col4
0 Some Black Red Sky
1 Blue Green Floor Bucket
2 Blacky Same Green Rad
让我们考虑第一个字母(前 2?3?)必须是精确命中。这会导致
col1 col2 col3 col4
0 Some Same Sky #Some and Same are very similar, Sky is the closest in col4
1 Blue #No match for Blue
2 Blacky Black Bucket #Black,Blacky are similar, and more similar to Bucket
3 Green Green #Exact match
4 Red Rad #Similar Match
5 Floor #No word started with F in any other column
为了解决这个问题,我想到了:
- 对于每一列,构建所有其他列中所有元素的唯一列表,并将目标列与共识对齐。但我不确定之后会怎样
- 对于每个元素,为其他每一列找到最接近的 1 个元素。
- 按字母顺序排序。
以上都有问题,在所有情况下我都需要做一些人工检查(这很好)。
【问题讨论】:
-
> 从两个表开始,它们的行数与第 1 列中的行数和列数相同。 > 对于每一行: 1. 查找列数 - 从剩余的每一列中找到 1 个匹配项。将基于某些数值度量(例如编辑距离)的最佳匹配添加到第一个数据帧中的相应列,并将度量值添加到另一个;如果第一个字母不匹配,则在第一个数据帧中填充 nan,在第二个数据帧中填充 0。; 2.(假设没有重复)如果一个词已经在列中看到,保留具有较高值的一个,删除另一个。 (续)
-
> 一旦你在第一行没有单词,为下一个可用单词创建一个新行,填充缺失的列。 > 重复直到用尽所有单词。这是一个应该在理论上可行的想法。虽然不是最有效的。
-
非常感谢,好主意!我试试看
-
我说的是保留“higher value”,但是要保留larger value还是lower value这个词取决于测量功能的选择。
-
@119631 您对如何连接来自其他列的搜索有什么想法?从 col1 开始,我在剩余的每一列中都找到了最佳匹配,但是如何根据 col2 插入最佳匹配呢?和 col3?...
标签: python pandas string algorithm sorting