【发布时间】:2021-10-18 17:59:22
【问题描述】:
我有一个看起来像这样的数据框
我想使用 for 循环为每个实例创建一个具有成对距离的新数据框 我使用以下代码创建成对距离
list=[]
list2=[]
list3=[]
for i in df.index:
for j in df.index:
list.append(i)
list2.append(j)
for z in range(0,5):
for y in range(0,5):
list3.append(distance.jaccard(df.iloc[z],df.iloc[y]))
Se=pd.Series(list)
Se2=pd.Series(list2)
Se3=pd.Series(list3)
df1=pd.DataFrame({'A':Se,'B':Se2,'Distance':Se3})
但我的结果是
预期输出
A-B-Distance
Instance_0 - Instance_1- 0.5
Instance_0 - Instance_2 - 0.0
Instance_0 - Insatnce_3 - 0.5
Instance_0 - Instance_4 -0.5
Instance_1 - Instance_2 - 0.5
Instance_1 - Instance_3 - 0.0
Insatnce_1 - Instance_4 - 1.0
Instance_2 - Instance_3 - 0.5
Instance_2 - Instance_4 - 0.5
instance_3 - Instance_4 - 1.0
【问题讨论】:
-
总是将代码、数据和完整的错误消息作为文本(不是截图,不是链接)放在有问题的地方(不在评论中)。
-
你必须描述你的输出和预期输出之间的差异。输出很长,我们可能看不到差异 - 我们无法在您的脑海中阅读。
-
对于普通列表,它需要在第二个
for-loop 中使用第一个索引 -for ... in range(first_index, n)而不是for ... in range(n)- 这应该跳过像(1,0)这样的对,因为你已经有对 @ 987654329@
标签: python pandas dataframe for-loop