【问题标题】:How do filter date time column according to time ranges specified in two column?如何根据两列中指定的时间范围过滤日期时间列?
【发布时间】:2020-05-06 04:18:22
【问题描述】:

在我过滤eda数据的一个excel文件中,我想根据我的第二个excel文件使用两列过滤这些数据;开始时间和结束时间;作为时间范围

(两个excel datetime64[ns]中的时间列类型)

你可以在图片中看到我的两个 excel 文件 enter image description here

我的代码是

df1 =  pd.read_excel(filename_1)`
df2 = pd.read_excel(filename_2, usecols= "A,C")
df3 = df1[df1['BinaryLabels'] == 1]
df2 = df2[(df3["StartTime"] <= df2.Time) & (df2.Time <= df3["EndTime"])]
print(df2)

并得到错误:ValueError: Can only compare same-labeled Series objects

我该如何解决?

感谢您的提前..

【问题讨论】:

    标签: excel pandas dataframe time multiple-columns


    【解决方案1】:

    如果一般DataFrames 具有不同的行数,您必须在过滤之前使用交叉连接merge

    df1 = pd.read_excel(filename_1)
    df2 = pd.read_excel(filename_2, usecols= "A,C")
    df3 = df1[df1['BinaryLabels'] == 1]
    
    df = df2.assign(a=1).merge(df3.assign(a=1), on='a', how='outer')
    df = df[(df["StartTime"] <= df.Time) & (df.Time <= df["EndTime"])]
    

    【讨论】:

    • 谢谢@jezrael,但它给出了如下错误; MemoryError: Unable to allocate 203. MiB for an array with shape (1, 26627139) and data type float64
    • 嗨@jezrael你能看看我关于时间序列之间相关性的另一个问题吗?我想你对stackoverflow.com/q/60182894/12746012有一个想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2022-01-03
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2013-10-07
    相关资源
    最近更新 更多