【问题标题】:How do i compare two dataframe using between function on the other dataframe如何在另一个数据帧上使用函数之间比较两个数据帧
【发布时间】:2020-10-02 15:43:11
【问题描述】:

我有一个如下所示的数据框:

        Words   Start_time(in sec)  End_time(in secs)   Total_Time_words
   0    let            0.1               2.5                 2.6
   1    me             2.5               2.6                 5.1
   2    tell           2.6               2.9                 5.5
   3    you            2.9               3.0                 5.9
   4    about          3.0               3.2                 6.2

我只想为每个索引选择“Start_time(in sec)”和“End_time(in secs)”列,以便我可以使用它在第二个数据帧中查找时间范围,以便我现在可以选择顶部5 幅值各取平均值。例如索引 0:在下面的这个数据帧上介于 0.1 和 2.5 之间,并在上面的数据帧上为其他人这样做:

        Time    Amplitudes
1220673 5.36    0.000155
1220674 1.36    0.000936
1220675 0.18    0.001319
1220676 2.36    0.001513
1220677 0.45    0.001666
1220678 1.06    0.001476
1220679 0.17    0.000820
1220680 55.36   0.000409
1220681 55.36   0.000227
1220682 0.09    0.000847
1220683 0.46    0.001333
1220684 1.26    0.001595
1220685 0.30    0.001481
1220686 55.36   0.001312
1220687 55.36   0.002050

预期的输出应该是具有上述结果的第一个数据帧的新数据帧:

       Words    Start_time(in sec)  End_time(in secs)   Total_Time_words  Amplitude
   0    let            0.1               2.5                 2.6            0.23
   1    me             2.5               2.6                 5.1            0.12
   2    tell           2.6               2.9                 5.5            0.09
   3    you            2.9               3.0                 5.9            1.20
   4    about          3.0               3.2                 6.2            0.67

【问题讨论】:

    标签: python pandas dataframe for-loop


    【解决方案1】:

    您可以使用pd.cutgroupby()

    bins = [df['Start_time(in sec)'].iloc[0]] + list(df['End_time(in secs)'])
    s = pd.cut(df2.Time, bins=bins, labels=df.index)
    
    df['Amplitudes'] = (df2.sort_values('Amplitudes', ascending=False)
                           .groupby(s)['Amplitudes']
                           .apply(lambda x: x.head(5).mean())
                       )
    

    输出:

       Words  Start_time(in sec)  End_time(in secs)  Total_Time_words  Amplitudes
    0    let                 0.1                2.5               2.6    0.001546
    1     me                 2.5                2.6               5.1         NaN
    2   tell                 2.6                2.9               5.5         NaN
    3    you                 2.9                3.0               5.9         NaN
    4  about                 3.0                3.2               6.2         NaN
    

    【讨论】:

    • 感谢您的回复......代码运行成功,但无法打印出来
    • 我想看看你是如何打印出数据框的......谢谢@Quan Hoang
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2019-07-21
    • 2021-01-24
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多