我想检查是否发生错误。我有这两个数据框,来自 excel 文件:
log_frame 是日志文件的数据帧,报告数据记录和错误:
Time Voltage[V] Freq[Hz] Speed Motor_Stt: ErrNo
0 10:00 220 50 30 1 0
1 10:10 220 50 30 1 0
2 10:20 220 50 0 2 3601
3 10:30 220 47 0 1 1500
4 10:40 250 50 0 1 7707
5 10:50 220 50 0 2 3601
6 11:00 220 50 0 2 3601
7 11:10 220 47 0 1 1500
8 11:20 220 50 30 1 0
9 11:30 220 50 30 1 0
dev_frame 是错误描述的数据帧:
Fehler-Nr. Descr Cause
0 1500 Chk_Voltage Voltage out of range
1 7707 Chk_Freq. Freq. out of range
2 3601 Chk_Motor_Stt Motor_defec
3 7704 switch_trip chk_over_curr
从 Log_frame 我可以通过以下方式检查一天中是否发生了哪些错误以及发生了多少错误:
Err_log = Log_frame['ErrNo']
p = Err_log[Err_log != 0].drop_duplicates('first').reset_index(drop=True)
这个结果是一个熊猫系列:
<class 'pandas.core.series.Series'>
0 3601
1 1500
2 7707
我可以通过以下方式“通过”第一个错误(或第二个和所有其他错误):
Dev_Err = Dev_frame['Fehler-Nr.']
n = Dev_Err[Dev_Err == p.iloc[0]] #or 1, 2 and so on
我想知道如何通过 p.iloc[i] 循环。我应该使用for循环还是可以通过任何pandas函数来完成
编辑:例如,如果我将 1 放入 p.iloc[] 我可以得到:
0 1500
如果 2:
1 7707
无需创建循环来检查每个值,您可以使用具有以下内容的isin
方法pandas.DataFrame
:
n = dev_frame[dev_frame['Fehler-Nr.'].isin(p)]['Fehler-Nr.']
这将返回:
0 1500
1 7707
2 3601
Name: Fehler-Nr., dtype: int64
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句