【问题标题】:Find values from a column in a DF at very specific times for every unique date在每个唯一日期的特定时间从 DF 中的列中查找值
【发布时间】:2020-03-16 16:14:14
【问题描述】:

我问了这个问题,得到的答案适用于具有连续且非缺失数据的一般情况,但不适用于我的具体情况。我有一个如下所示的 DF。

eventTime       MeteredEnergy Demand RunningHoursLamps 
6/7/2018 0:00   67.728           64  1037.82
6/7/2018 1:00   67.793           64  1038.82
6/7/2018 2:00   67.857           64  1039.82
6/7/2018 3:00   67.922           64  1040.82
6/7/2018 4:00   67.987           64  1041.82
6/7/2018 5:00                    64  1042.82
6/7/2018 6:00                        1043.43
6/7/2018 23:00  68.288
6/8/2018 0:00   67.728           64  1037.82
6/8/2018 23:00  67.793           64  1097.82

我需要一个 DF 来查找“eventTime”中每个唯一日期在 0 小时和 23 小时的 RunningHoursLamps 值之间的差异

Expected output

    Date        00:00       23:00       Difference 
    6/7/2018    1037.82     NaN         NaN
    6/8/2018    1037.82     1097.82     60

【问题讨论】:

  • 所以基本上,你想知道灯泡每天运行的时间吗?你试过什么代码?你现在卡在哪里了?
  • 没错。根据此处的建议,我使用了 groupby.assign (第一,最后),但这仅在我拥有所有数据时才有效。我正在尝试遍历数据框,并仅在符合我的条件的特定日期和时间对数据进行采样。 bill3 = pd.DataFrame() each = unique_dates[5] for each in unique_dates: date = each hour0 = df[(df['eventTime'] == each) & (df['hour'] == 0)] ['RunningHoursLamp'] hour23 = df[(df['eventTime'] == each) & (df['hour'] == 23)] ['RunningHoursLamp'] bill3 = pd.DataFrame([date,hour0,hour23]) bill3
  • 为什么使用当天的0:0023:00而不是第二天的0:000:00的span?
  • @albert:你是对的。它应该是第二天的 0 到 0。我在处理prb时想到了这一点。谢谢

标签: python dataframe indexing sampling datetimeindex


【解决方案1】:

更新:对于那些感兴趣的人:我找到了一种方法来做到这一点。我从 eventTime 列中解析出一个包含日期和小时的单独列,并在我没有所需 DateTime 的数据时对其进行循环处理并处理异常。谢谢。

#for loop to build the bill dataframe
bill = pd.DataFrame()

for i in range(len(unique_dates)):
    try :
        if i == 0:
            hour0 = np.nan
        else:
            hour0 = df.loc[((df['date'] == unique_dates[i]) & (df['hour'] == 0)),'RunningHoursLamp'].values[0]
    except IndexError:
        hour0 = np.nan

    try :
        hour24 = df.loc[((df['date'] == unique_dates[i+1]) & (df['hour'] == 0)),'RunningHoursLamp'].values[0]
    except IndexError:
        hour24 = np.nan

    temp = pd.DataFrame([[unique_dates[i],hour0,hour24]],columns=['Date','Hour_0','Hour_24'])  
    bill = bill.append(temp,ignore_index=True)

bill

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2021-09-23
    • 2021-05-24
    • 2021-04-22
    相关资源
    最近更新 更多