things = ['car', 'bike', 'sidewalk', 'eatery']
action = ['walking', 'caring', 'biking', 'eating']
matrix = pd.DataFrame(index = things, columns = action)
def lev(x):
x = Levenshtein.distance(x.index, x.column)
matrix.applymap(lev)
到目前为止,我求助于使用以下(以下),但我发现它笨拙和缓慢
matrix = pd.DataFrame(data = [action for i in things], index = things, columns = action)
for i, values in matrix.iterrows():
for j, value in enumerate(values):
matrix.ix[i,j] = Levenshtein.distance(i, value)
我认为可以使用apply
,对于列值使用.name
:
def lev(x):
#replace your function
return x.index + x.name
a = matrix.apply(lev)
print (a)
walking caring biking eating
car carwalking carcaring carbiking careating
bike bikewalking bikecaring bikebiking bikeeating
sidewalk sidewalkwalking sidewalkcaring sidewalkbiking sidewalkeating
eatery eaterywalking eaterycaring eaterybiking eateryeating
编辑:
如果需要一些特定的操作使用广播:
a = pd.DataFrame(matrix.index.values + matrix.columns.values[:,None],
index=matrix.index,
columns=matrix.columns)
print (a)
walking caring biking eating
car carwalking bikewalking sidewalkwalking eaterywalking
bike carcaring bikecaring sidewalkcaring eaterycaring
sidewalk carbiking bikebiking sidewalkbiking eaterybiking
eatery careating bikeeating sidewalkeating eateryeating
a = pd.DataFrame(matrix.index.values + matrix.columns.values[:, np.newaxis],
index=matrix.index,
columns=matrix.columns)
print (a)
walking caring biking eating
car carwalking bikewalking sidewalkwalking eaterywalking
bike carcaring bikecaring sidewalkcaring eaterycaring
sidewalk carbiking bikebiking sidewalkbiking eaterybiking
eatery careating bikeeating sidewalkeating eateryeating
我试图比较一个字符串列表的相似性,并在一个数据框中得到结果以供检查;所以我使用一个列表作为索引,另一个作为列列表。然后我想计算它们的“Levenshtein相似度”(一个比较两个单词之间相似度的函数)。 我试图在每个单元格上使用,并将单元格索引与单元格列进行比较。我怎么能这么做?还是更简单的选择? 到目前为止,我使用了下面的方法,但我发现它既笨拙又缓慢
问题内容: 我有一个数据框,其中某些单元格包含多个值的列表。我不想扩展一个单元格中的多个值,而是想扩展数据框,以便列表中的每个项目都有自己的行(所有其他列中的值都相同)。所以,如果我有: 如何转换为长格式,例如: 索引并不重要,可以将现有的列设置为索引也可以,最后的顺序也不重要。 问题答案: 结果: PS 在这里你可能会发现一些通用的解决方案 更新:一些解释:IMO了解此代码的最简单方法是尝试逐步
问题 你希望能够在特定的情况下检测出在数组中的每个元素。 解决方案 使用 Array.every (ECMAScript 5): evens = (x for x in [0..10] by 2) evens.every (x)-> x % 2 == 0 # => true Array.every 被加入到 Mozilla 的 Javascript 1.6 ,ECMAScript 5 标准。如果
本文向大家介绍Python-在Pandas DataFrame中更改列名和行索引,包括了Python-在Pandas DataFrame中更改列名和行索引的使用技巧和注意事项,需要的朋友参考一下 Pandas是一个python库,提供了许多数据分析功能,而这些功能在python标准库中是不可用的。一种这样的功能是使用数据帧。它们是代表列和行的矩形网格。在创建数据框时,我们确定列的名称,并在随后的数
问题内容: 我有一个带有包含列表对象的列的Pandas DataFrame 如何访问每个列表的第一个元素并将其保存到DataFrame的新列中?要获得这样的结果: 我知道这可以通过遍历每一行来完成,但是有什么“ pythonic”方法吗? 问题答案: 您可以使用和功能
我有一个数据框,其中一些单元格包含多个值的列表。我不想在一个单元格中存储多个值,而是希望扩展dataframe,以便列表中的每个项都有自己的行(在所有其他列中都有相同的值)。因此,如果我有: 如何转换为长格式,例如: 索引并不重要,可以将现有列设置为索引,而最终的顺序并不重要。