python - 熊猫将一天中的所有值设置为当天某个时间的数据
问题描述
生成数据
random.seed(42)
date_rng = pd.date_range(start='1/1/2018', end='1/08/2018', freq='H')
df = pd.DataFrame(np.random.randint(0,10,size=(len(date_rng), 3)),
columns=['data1', 'data2', 'data3'],
index= date_rng)
daily_mean_df = pd.DataFrame(np.zeros([len(date_rng), 3]),
columns=['data1', 'data2', 'data3'],
index= date_rng)
mask = np.random.choice([1, 0], df.shape, p=[.35, .65]).astype(bool)
df[mask] = np.nan
df
>>>
data1 data2 data3
2018-01-01 00:00:00 1.0 3.0 NaN
2018-01-01 01:00:00 8.0 5.0 8.0
2018-01-01 02:00:00 5.0 NaN 6.0
2018-01-01 03:00:00 4.0 7.0 4.0
2018-01-01 04:00:00 NaN 8.0 NaN
... ... ... ...
2018-01-07 20:00:00 8.0 7.0 NaN
2018-01-07 21:00:00 5.0 4.0 5.0
2018-01-07 22:00:00 NaN 6.0 NaN
2018-01-07 23:00:00 2.0 4.0 3.0
2018-01-08 00:00:00 NaN NaN NaN
我想每天选择一个特定时间,然后将一天中的所有值设置为等于该时间的数据。比如我想选择1:00:00,那么2018-01-01的所有数据都等于2018-01-01 01:00:00,2018-01-02的所有数据都等于2018 -01-02 01:00:00 等,
我知道如何选择时间的数据:
timestamp = "01:00:00"
df[df.index.strftime("%H:%M:%S") == timestamp]
但我不知道如何设置当天的数据等于它。
感谢您的阅读。
解决方案
检查重新索引
s=df[df.index.strftime("%H:%M:%S") == timestamp]
s.index=s.index.date
df[:]=s.reindex(df.index.date).values
推荐阅读
- visual-studio - 从 Azure 构建管道中排除项目
- reactjs - 反应钩子 - 状态在功能中失去价值
- xamarin.forms - Xamarin.Forms:当应用程序进入睡眠模式时,如何在 Android 中关闭 ActionSheet?
- python - 通过 Python 中的 Enterprise License Manager v1 API 进行 G-suite 许可证管理
- java - JDK 11 模块中的不可变标准语法错误
- android - 在每个片段 onStart 触发的 livedata 观察事件
- markdown - Floating markdown images in Gatsby
- flutter - Back button flutter
- javascript - 创建一个返回三个数字的最高乘积的函数
- python - How to create a soundfile from fft-spectrum with Python?