只能比较标记相同的DataFrame对象错误

时间:2020-04-29 17:07:45

标签: python pandas dataframe

我正在尝试比较文件夹中每个csv文件中的数据帧。我想编写一个代码来检测(cas> vref_new)或(vref> cas),这将导致文件不稳定。下面是代码。

os.chdir("D:\TUGAS\TA\TUYS\Data TA dari Garuda\File Yut dan Dimas\SelesaiTA")
dflist=pd.DataFrame()
for file in  os.listdir("D:\TUGAS\TA\TUYS\Data TA dari Garuda\File Yut dan Dimas\SelesaiTA"):

    df = pd.read_csv(file, skiprows = [0,1,3,4])
    df.columns = [column.replace(" ","_") for column in df.columns]
    df.columns = [column.replace("/","_") for column in df.columns]
    dff = df[(df.ALTITUDE_ABOVE_FIELD_ELEV <= 500) & (df.DISTANCE_TO_THRESHOLD < 5) & (df.LANDING_GEAR_STATUS != "FULL_GRD")]
    cas = dff.iloc[:,10:11].astype('float64').reset_index(drop=True)
    vref = dff.iloc[:,132:133].astype('float64').reset_index(drop=True)
    vref_new = vref+20
    if ((cas>vref_new) or (vref>cas)):
      print('Unstabilized Approach%s ' %file) 

我已经检查过cas和vref数据框是否浮空并且仍然出现ValueError:只能比较标记相同的DataFrame对象。任何帮助将不胜感激

cas的数据框如下所示

    COMPUTED_AIR_SPEED 
0   148.0
1   147.5
2   148.5
3   149.3
4   148.5
5   148.3
6   149.0
7   148.0
8   148.0
9   148.0
10  147.0
11  146.0
12  147.3
13  148.8
14  148.0
15  147.5
16  146.5
17  148.5
18  147.5
19  148.3

vref的数据框如下所示

    VREF_AT_LANDING
0   142.0
1   142.0
2   142.0
3   142.0
4   142.0
5   142.0
6   142.0
7   142.0
8   142.0
9   142.0
10  142.0
11  142.0
12  142.0
13  142.0
14  142.0
15  142.0
16  142.0
17  142.0
18  142.0
19  142.0

1 个答案:

答案 0 :(得分:0)

所以这里有两个问题。如错误所示,第一个是您只能比较标记相同的DataFrame。你不是。一个具有一个标记为"COMPUTED_AIR_SPEED"的列,另一个具有单个标记为"VREF_AT_LANDING"的列。正确的地方就是引发错误的原因。如果为列赋予相同的标签,并通过为DataFrame的变量赋予名称来区分两个数据集,则不会出现此错误。

解决此问题时,您会发现另一个错误。这些表达式不能解析为单个布尔值TrueFalse。它返回每个行具有TrueFalse的Series,具体取决于哪个DataFrame在该索引处具有更大的值。因此,下一步是使用.any().all()减小值。

如果您希望它在一个DataFrame中的任何行都大于另一行的情况下将“不稳定方法”结果发送到文件,请使用.any(),如果您需要所有这些行都更大,然后再发送结果,请使用.all()

最后,上一步将为您提供一个具有单个布尔值而不是布尔值的系列。再次在末尾加上.any()即可得到布尔值:

if ((cas>vref_new).any().any() or (vref>cas)).any().any():
    ....