如何在数据框中每天的特定时间操作数据框列中的值
How to manipulate values in a dataframe column at specific times for each day within the dataframe
所以,我有一个日期时间索引数据框,如下所示:
eventTime Energy Power RunningHours
9/29/2018 0:00 146.985 65 2256.88
9/29/2018 1:00 147.05 64.5 2257.87
9/29/2018 2:00 147.116 65 2258.87
9/29/2018 3:00 147.181 65 2259.87
9/29/2018 4:00 147.246 65 2260.87
9/29/2018 5:00 147.312 65 2261.87
9/29/2018 5:11 76.428
9/29/2018 5:12 65
9/29/2018 6:00 147.377 65 2262.87
9/29/2018 7:00 147.443 65 2263.87
9/29/2018 8:00 147.45 2263.98
9/29/2018 9:17 76.558
9/29/2018 9:17 1174.35
9/29/2018 19:00 147.502 65 2264.75
9/29/2018 20:00 147.567 65 2265.75
9/29/2018 21:00 147.633 65 2266.75
9/29/2018 22:00 147.698 65 2267.75
9/29/2018 23:00 147.764 65 2268.75
9/30/2018 0:00 147.829 65 2269.75
9/30/2018 1:00 147.895 65 2270.75
9/30/2018 2:00 147.961 65 2271.75
9/30/2018 3:00 148.026 65 2272.73
9/30/2018 4:00 148.092 65 2273.73
9/30/2018 5:00 148.157 65 2274.73
9/30/2018 6:00 148.223 65 2275.73
9/30/2018 7:00 148.288 65 2276.73
9/30/2018 8:00 148.297 2276.87
9/30/2018 13:51 64
9/30/2018 19:00 148.35 65 2277.68
9/30/2018 20:00 148.415 65 2278.67
9/30/2018 21:00 148.481 65 2279.67
9/30/2018 22:00 148.546 65 2280.67
9/30/2018 23:00 148.611 65 2281.67
对于日期时间索引中的每一天,我都在寻找 "RunningHours" 值在 23 小时和 0 小时之间的差异。
我想象我的输出看起来像
9/29/2018 11.87
9/30/2018 11.92
我如何找到这个。我目前正在将日期时间索引分解为日期和时间,然后向下循环日期和时间以找出差异。对于非常简单的事情来说似乎很复杂,我相信有一种更简单的方法可以按原样使用日期时间索引。我只是不知道怎么办。请帮忙
@ansev
您的代码非常适用于连续数据以及存在 00: 和 23:00 时间戳的信息。但是,如果这 2 个时间戳的数据丢失,脚本将选择该日期的第一个可用或最后一个可用数据点。
为了。例如:对于下面的数据
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/7/2018 1037.82 1043.43 5.61
如果数据不可用,如何将其修改为 NaN?
非常感谢您对此的帮助。
假设它是按时间顺序排列的,我们可以使用 groupby.agg
得到 first
和 last
每个 date
然后我们可以得到差异
new_df = (df.groupby(pd.to_datetime(df['eventTime']).dt.date)['RunningHours']
.agg(['first','last'])
.assign(difference=lambda x: x['last']-x['first'])
.reset_index())
print(new_df)
eventTime first last difference
0 2018-09-29 2256.88 2268.75 11.87
1 2018-09-30 2269.75 2281.67 11.92
我在这里为那些正在寻找不同东西的人回答了我自己的问题。
所以,我有一个日期时间索引数据框,如下所示:
eventTime Energy Power RunningHours
9/29/2018 0:00 146.985 65 2256.88
9/29/2018 1:00 147.05 64.5 2257.87
9/29/2018 2:00 147.116 65 2258.87
9/29/2018 3:00 147.181 65 2259.87
9/29/2018 4:00 147.246 65 2260.87
9/29/2018 5:00 147.312 65 2261.87
9/29/2018 5:11 76.428
9/29/2018 5:12 65
9/29/2018 6:00 147.377 65 2262.87
9/29/2018 7:00 147.443 65 2263.87
9/29/2018 8:00 147.45 2263.98
9/29/2018 9:17 76.558
9/29/2018 9:17 1174.35
9/29/2018 19:00 147.502 65 2264.75
9/29/2018 20:00 147.567 65 2265.75
9/29/2018 21:00 147.633 65 2266.75
9/29/2018 22:00 147.698 65 2267.75
9/29/2018 23:00 147.764 65 2268.75
9/30/2018 0:00 147.829 65 2269.75
9/30/2018 1:00 147.895 65 2270.75
9/30/2018 2:00 147.961 65 2271.75
9/30/2018 3:00 148.026 65 2272.73
9/30/2018 4:00 148.092 65 2273.73
9/30/2018 5:00 148.157 65 2274.73
9/30/2018 6:00 148.223 65 2275.73
9/30/2018 7:00 148.288 65 2276.73
9/30/2018 8:00 148.297 2276.87
9/30/2018 13:51 64
9/30/2018 19:00 148.35 65 2277.68
9/30/2018 20:00 148.415 65 2278.67
9/30/2018 21:00 148.481 65 2279.67
9/30/2018 22:00 148.546 65 2280.67
9/30/2018 23:00 148.611 65 2281.67
对于日期时间索引中的每一天,我都在寻找 "RunningHours" 值在 23 小时和 0 小时之间的差异。
我想象我的输出看起来像
9/29/2018 11.87
9/30/2018 11.92
我如何找到这个。我目前正在将日期时间索引分解为日期和时间,然后向下循环日期和时间以找出差异。对于非常简单的事情来说似乎很复杂,我相信有一种更简单的方法可以按原样使用日期时间索引。我只是不知道怎么办。请帮忙
@ansev
您的代码非常适用于连续数据以及存在 00: 和 23:00 时间戳的信息。但是,如果这 2 个时间戳的数据丢失,脚本将选择该日期的第一个可用或最后一个可用数据点。
为了。例如:对于下面的数据
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/7/2018 1037.82 1043.43 5.61
如果数据不可用,如何将其修改为 NaN? 非常感谢您对此的帮助。
假设它是按时间顺序排列的,我们可以使用 groupby.agg
得到 first
和 last
每个 date
然后我们可以得到差异
new_df = (df.groupby(pd.to_datetime(df['eventTime']).dt.date)['RunningHours']
.agg(['first','last'])
.assign(difference=lambda x: x['last']-x['first'])
.reset_index())
print(new_df)
eventTime first last difference
0 2018-09-29 2256.88 2268.75 11.87
1 2018-09-30 2269.75 2281.67 11.92
我在这里为那些正在寻找不同东西的人回答了我自己的问题。