我正在尝试比较文件夹中每个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
答案 0 :(得分:0)
所以这里有两个问题。如错误所示,第一个是您只能比较标记相同的DataFrame。你不是。一个具有一个标记为"COMPUTED_AIR_SPEED"
的列,另一个具有单个标记为"VREF_AT_LANDING"
的列。正确的地方就是引发错误的原因。如果为列赋予相同的标签,并通过为DataFrame的变量赋予名称来区分两个数据集,则不会出现此错误。
解决此问题时,您会发现另一个错误。这些表达式不能解析为单个布尔值True
或False
。它返回每个行具有True
或False
的Series,具体取决于哪个DataFrame在该索引处具有更大的值。因此,下一步是使用.any()
或.all()
减小值。
如果您希望它在一个DataFrame中的任何行都大于另一行的情况下将“不稳定方法”结果发送到文件,请使用.any()
,如果您需要所有这些行都更大,然后再发送结果,请使用.all()
。
最后,上一步将为您提供一个具有单个布尔值而不是布尔值的系列。再次在末尾加上.any()
即可得到布尔值:
if ((cas>vref_new).any().any() or (vref>cas)).any().any():
....