Levenshtein 编辑行和列之间的距离
Levenshtein edit-distance between rows and columns
我创建了以下空 DataFrame:
columns = ['Band','Tree','Foot']
rows = ['Hand', 'Foot', 'Shoulder']
df = pd.DataFrame(index=rows, columns=columns)
我想计算列与行之间的距离,目前正在使用以下代码:
import pandas as pd
import nltk
def distance(x):
i = x.index
j = x.name
return nltk.edit_distance(i,j)
df = df.apply(distance)
但是这个 returns:
-
-
Band
4
Tree
4
Foot
4
我想return每个单元格对应的列和行之间的距离。
Band
Tree
Foot
Hand
1
4
4
Foot
4
4
0
Shoulder
7
7
7
我错过了什么?
edit_distance
需要 2 个字符串,因此您必须遍历索引。一种选择是应用在 df
:
上执行此操作的 lambda
df.apply(lambda col: [nltk.edit_distance(col.name, i) for i in col.index])
但是,我认为首先创建一个包含值的字典更简单,而不是填充 DataFrame;然后构建一个 DataFrame 如下:
df = pd.DataFrame({j: {i: nltk.edit_distance(i,j) for i in rows} for j in columns})
输出:
Band Tree Foot
Hand 1 4 4
Foot 4 4 0
Shoulder 7 7 7
我创建了以下空 DataFrame:
columns = ['Band','Tree','Foot']
rows = ['Hand', 'Foot', 'Shoulder']
df = pd.DataFrame(index=rows, columns=columns)
我想计算列与行之间的距离,目前正在使用以下代码:
import pandas as pd
import nltk
def distance(x):
i = x.index
j = x.name
return nltk.edit_distance(i,j)
df = df.apply(distance)
但是这个 returns:
- | - |
---|---|
Band | 4 |
Tree | 4 |
Foot | 4 |
我想return每个单元格对应的列和行之间的距离。
Band | Tree | Foot | |
---|---|---|---|
Hand | 1 | 4 | 4 |
Foot | 4 | 4 | 0 |
Shoulder | 7 | 7 | 7 |
我错过了什么?
edit_distance
需要 2 个字符串,因此您必须遍历索引。一种选择是应用在 df
:
df.apply(lambda col: [nltk.edit_distance(col.name, i) for i in col.index])
但是,我认为首先创建一个包含值的字典更简单,而不是填充 DataFrame;然后构建一个 DataFrame 如下:
df = pd.DataFrame({j: {i: nltk.edit_distance(i,j) for i in rows} for j in columns})
输出:
Band Tree Foot
Hand 1 4 4
Foot 4 4 0
Shoulder 7 7 7