繁体   English   中英

将 df 重新采样到微秒 - Pandas

[英]Re-sample df to microsecond - 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()

Output

                       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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM