ValueError: Length of values (15480) does not match length of index (6649)报这个错怎么办
时间: 2023-12-15 21:05:53 浏览: 167
这个错误是由于相似度列表 `similarity_list` 的长度与数据框的索引长度不一致导致的。这可能是因为在计算相似度时没有正确处理相同作者的情况。
要解决这个问题,可以修改代码如下:
```python
import pandas as pd
from difflib import SequenceMatcher
# 读取原始数据
df = pd.read_excel("1.xlsx")
# 创建空的相似度列表
similarity_list = []
# 遍历数据行
for i in range(len(df)):
author1 = df.loc[i, "author"]
org1 = df.loc[i, "org"]
max_similarity = 0
# 计算当前行与其他行的相似度
for j in range(len(df)):
if i != j:
author2 = df.loc[j, "author"]
org2 = df.loc[j, "org"]
# 判断是否为相同作者
if author1 == author2:
# 计算相似度
similarity = SequenceMatcher(None, org1, org2).ratio()
# 更新最大相似度
if similarity > max_similarity:
max_similarity = similarity
# 将最大相似度添加到相似度列表中
similarity_list.append(max_similarity)
# 添加相似度列表为新的一列
df["similarity"] = similarity_list
# 保存包含 author、org 和相似度数据的表格为 2.xlsx
df.to_excel("2.xlsx", index=False)
```
在修改后的代码中,我们通过判断是否为相同作者来计算相似度,并将最大相似度添加到相似度列表 `similarity_list` 中。这样确保了相似度列表与数据框的索引长度一致,避免了报错。
请确保在运行代码之前已经安装了 Pandas 和 difflib 库,并将 `1.xlsx` 文件准确放置在当前工作目录下。如果问题仍然存在,请检查数据的正确性,并确保作者列和机构列的数据没有缺失或格式错误。
阅读全文