python - 比较不等长度的列表没有错误

标签 python pandas

给定一个数据帧列表,我试图查找是否可以合并类似的表。

dummy_data1 = {
        'id': ['1', '2', '3', '4', '5'],
        'Feature1': ['A', 'C', 'E', 'G', 'I'],
        'Feature2': ['B', 'D', 'F', 'H', 'J']}

dummy_data2 = {
        'id': ['1', '2', '6', '7', '8'],
        'Feature1': ['K', 'M', 'O', 'Q', 'S'],
        'Feature2': ['L', 'N', 'P', 'R', 'T']}

dummy_data3 = {
        'id': ['1', '2', '6', '7', '8'],
        'Feature1': ['R', 'S', 'T', 'U', 'V']}

df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2'])
df2 = pd.DataFrame(dummy_data2, columns = ['id', 'Feature1', 'Feature2'])
df3 = pd.DataFrame(dummy_data3, columns = ['id', 'Feature1'])

这个操作(见下面的代码)很好理解(情况1没有错误,情况2长度不匹配)

>>>df1.columns == df2.columns # CASE 1
>>>array([ True,  True,  True])

>>>df1.columns == df3.columns # CASE 2
>>>ValueError                                
   Traceback (most recent call last)
   <ipython-input-107-d30deec2e5d5> in <module>
   ----> 1 df1.columns == df3.columns
   ValueError: Lengths must match to compare

但是当我做的时候

>>>mergeRequired = False if False in df1.columns == df3.columns else True
>>>print(mergeRequired)
>>>True

我应该得到ValueError:长度必须匹配才能比较而不是True。为什么这没有抛出任何错误?如何强制程序在 mergeRequired = False if False in df1.columns == df3.columns else True 处抛出错误?

最佳答案

当你编写这段代码时:

mergeRequired = False if False in df1.columns == df3.columns else True

其解释方式与此相同:

mergeRequired = False if (False in df1.columns) == df3.columns else True

因为运算符 in== 在 Python 中具有相同的优先级(请参阅 here ),这解释了观察到的行为。

要解决您的问题,您应该使用括号,如下所示:

mergeRequired = False if False in (df1.columns == df3.columns) else True

关于python - 比较不等长度的列表没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480118/

相关文章:

python - 使用 numpy where : for black cell, 将新值放入列中

python - 使用 python 替换日期列中缺少的月份和年份

python - 如何加速 Flask 应用程序的 JSON 速度?

python - 属性错误 : module 'cv2.cv2' has no attribute 'TrackerMOSSE_create'

python - 将包含 pandas 对象(系列/数据帧)的 python 元组、列表、字典转换为 json

python - 如何用字典修复一些 pandas 列值并保留其他列值?

python - 分解 Pandas 数据框列

Python - 正则表达式 - 来自 Xpath - TypeError : '_sre.SRE_Match' object is not subscriptable

python - 使用 pip 安装包返回错误

python - 如何使用numpy.random生成int数的矩阵