python - 将 df 重新采样到微秒 - Pandas
问题描述
我正在尝试重新采样 df 中的时间戳以每 0.1 秒显示一次。它正在重新采样,但我丢失了与这些时间戳相关的数据。
d = ({
'Time' : ['2010-07-27 09:25:31.1','2010-07-27 09:25:31.2','2010-07-27 09:25:31.4','2010-07-27 09:25:31.5','2010-07-27 09:25:31.6','2010-07-27 09:25:31.9','2010-07-27 09:25:32.0'],
'Area' : ['A','A','A','A','A','A','A',],
})
df = pd.DataFrame(data=d)
df = df.set_index('Time').asfreq('0.1S').reset_index()
出去:
Time Area
0 2010-07-27 09:25:31.100 NaN
1 2010-07-27 09:25:31.200 NaN
2 2010-07-27 09:25:31.300 NaN
3 2010-07-27 09:25:31.400 NaN
4 2010-07-27 09:25:31.500 NaN
5 2010-07-27 09:25:31.600 NaN
6 2010-07-27 09:25:31.700 NaN
7 2010-07-27 09:25:31.800 NaN
8 2010-07-27 09:25:31.900 NaN
9 2010-07-27 09:25:32.000 NaN
故意的:
0 2010-07-27 09:25:31.100 A
1 2010-07-27 09:25:31.200 A
2 2010-07-27 09:25:31.300 NaN
3 2010-07-27 09:25:31.400 A
4 2010-07-27 09:25:31.500 A
5 2010-07-27 09:25:31.600 A
6 2010-07-27 09:25:31.700 Nan
7 2010-07-27 09:25:31.800 NaN
8 2010-07-27 09:25:31.900 A
9 2010-07-27 09:25:32.000 A
解决方案
您可以执行以下操作。首先,您需要确保您的列在datetime64[ns]
&然后resample
在该列上使用
df['Time']=pd.to_datetime(df['Time'])
df.set_index('Time').resample('0.1S').last().fillna(0).reset_index()
输出
Time Area
0 2010-07-27 09:25:31.100 A
1 2010-07-27 09:25:31.200 A
2 2010-07-27 09:25:31.300 0
3 2010-07-27 09:25:31.400 A
4 2010-07-27 09:25:31.500 A
5 2010-07-27 09:25:31.600 A
6 2010-07-27 09:25:31.700 0
7 2010-07-27 09:25:31.800 0
8 2010-07-27 09:25:31.900 A
9 2010-07-27 09:25:32.000 A
推荐阅读
- html - 如何更改地图大小?
- docker - 使用 Dockerfile 构建映像时如何在主机上指定要映射到的端口
- .net - 如何更改 Microsoft Visual Studio 安装程序项目本地化
- quasar-framework - 如何从 quasar 默认应用模板中删除路由器?
- ios - react-native:如何扫描同一应用程序中 webview/网页内的 QR 码?
- reactjs - SVG Next Error 您可能需要适当的加载器来处理此文件类型,目前没有配置加载器来处理此文件
- javascript - 如何在Angular js中尽快解决promise调用
- python-requests - PostgREST 不返回错误 JSON 值的错误(Python 请求)
- angular - 在 Angular 中动态添加客户端的角色
- python - `produce()` 在异步 kafka 实现中只调用一次?