pandas 错误 ValueError: ‘Lengths must match to compare‘

在dataframe中找到某个值,并最终输出其对应的其他某个列的值
https://chehongshu.blog.csdn.net/article/details/107623238

错误

find_series = df[df['obj']==i]['solution']
print(find_series.values[0])#输出obj列等于i的solution列的第0行的值

提示错误
ValueError: (‘Lengths must match to compare’, (907,), (2,))

原因
https://cumsum.wordpress.com/2021/07/24/pandas-valueerror-lengths-must-match-to-compare/
我的i是个有两个元素的list, 不能直接对比
由于 pandas 尝试对比较进行矢量化,即逐个元素进行比较,因此它要求双方具有相同的大小。 而且它不会知道您要将右侧列表作为一个整体与左侧列中的每个元素进行比较。

改正

se = df['obj'].map(tuple) == tuple(i)
a = se[se == True].index.values
print(df.at[a[0], 'solution'])##输出obj列等于i的solution列的第0行的值
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误通常是由于比较的两个对象的长度不匹配所导致的。你需要确保比较的两个对象具有相同的长度。 你可以检查你的代码并找出哪些对象被用于比较,并确保它们的长度相同。如果需要,你可以使用内置函数`len()`来获取对象的长度,并相应地调整它们的长度。 另外,你也可以检查你的代码逻辑,确保你在比较对象之前已经做好了必要的处理,使得它们的长度相同。 ### 回答2: ValueError: ('Lengths must match to compare', (21607,), (1,)) 这个错误通常是因为比较的两个对象长度不匹配引起的。解决这个问题的方法取决于你具体的应用场景和需求。以下是一些可能的解决方法: 1. 检查数据长度:首先,你需要确认这两个对象的长度是否正确。你可以使用 len() 函数来获取对象的长度,并确保它们的长度是相同的。 2. 数据对齐:如果你确定了两个对象的长度不匹配,你可以考虑对它们进行对齐。你可以使用类似于 NumPy 或 Pandas 等库中的方法来对数据进行对齐,使得它们的长度一致,并确保每个数据点都有对应的匹配项。 3. 数据处理:如果你的应用场景允许,你也可以对数据进行预处理,以使得它们的长度匹配。这可能需要对其中一个对象进行删减、填充或重采样等操作,以使得长度相同。 4. 检查数据格式:另外,你还需要确保这两个对象的数据格式是一致的。如果数据格式不同,即使长度相同也会出现比较错误。你可以查看数据格式,并根据需要进行转换或标准化。 5. 重新检查代码逻辑:如果上述方法仍然无法解决问题,那么你可能需要重新审查你的代码逻辑。检查是否有其他因素导致了这个比较错误,并相应地进行修正。 总之,解决 ValueError: ('Lengths must match to compare', (21607,), (1,)) 错误的关键在于确认对象的长度是否匹配,并根据需要进行数据对齐或预处理。 ### 回答3: ValueError: ('Lengths must match to compare', (21607,), (1,)) 是一个类型错误,在此处发生的原因是尝试用长度不匹配的两个数组进行比较。 要解决这个错误,需要确保比较的两个数组具有相同的长度。有几种方式可以解决这个问题: 1. 检查数据源:首先,检查提供这两个数组的数据源。确保数据源中的数据没有发生错误或丢失。可能是数据源中的某个数据长度有误,导致无法进行比较。修复数据源中的问题可以解决这个错误。 2. 使用索引或切片:如果确定只需要比较两个数组的部分元素,可以使用索引或切片来确保两个数组具有相同的长度。例如,使用`array1[:n]`和`array2[:n]`切片来比较两个数组的前n个元素。 3. 手动调整数组长度:如果需要比较两个长度不匹配的数组的所有元素,可以手动调整数组的长度。可以通过添加或删除元素,使两个数组具有相同的长度。例如,如果一个数组较短,可以在末尾添加一些默认值,使其达到相同的长度。 4. 使用条件语句:如果无法将两个数组的长度调整为相同,可以使用条件语句来处理错误。在进行比较之前,先检查两个数组的长度是否相同,如果不相同,则执行相应的逻辑来处理不匹配的情况。 总而言之,解决这个错误的关键是确保比较的两个数组具有相同的长度。可以通过修复数据源、使用索引或切片、手动调整数组长度或使用条件语句来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值