如何将熊猫系列元素传递到另一个数据框

时间:2019-05-30 10:55:55

标签: python-3.x pandas series

我想检查是否发生错误。 我有这两个数据框,来自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循环还是可以通过任何熊猫函数完成

编辑:例如如果我在p.iloc []中放入1,我可以得到:

0   1500

如果2:

1   7707

2 个答案:

答案 0 :(得分:0)

无需创建循环来检查每个值,可以使用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

参考:pandas.DataFrame.isin

答案 1 :(得分:0)

如果您使用熊猫并进行for循环,则您错了。使用熊猫矢量化操作。这些都是使用(简单示例)完成的

df.apply(some function, axis)

我不是100%确信我理解您要实现的目标,但我相信您只是想合并/合并给定错误的错误数。如果是这样,pandas.join()和pandas.merge()会有所帮助。检查文档。