首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DataFrame中选择一个没有日期的时间范围

在DataFrame中选择一个没有日期的时间范围
EN

Stack Overflow用户
提问于 2018-07-18 22:43:09
回答 1查看 1.6K关注 0票数 2

我正在使用/学习Pandas来加载csv样式的数据集,其中有一个时间列可用作索引。数据大约在100 at处采样。以下是数据的简化片段:

Time (sec) Col_A Col_B Col_C 0.0100 14.175 -29.97 -22.68 0.0200 13.905 -29.835 -22.68 0.0300 12.257 -29.32 -22.67 ... ... 1259.98 -0.405 2.205 3.825 1259.99 -0.495 2.115 3.735

有20分钟的数据,导致约12万行在100赫兹。我的目标是在特定的时间范围内选择这些行,比如100到200秒。

以下是我想出的

代码语言:javascript
复制
import panda as pd
df = pd.DataFrame(my_data)                    # my_data is a numpy array
df.set_index(0, inplace=True)
df.columns = ['Col_A', 'Col_B', 'Col_C']
df.index = pd.to_datetime(df.index, unit='s', origin='1900-1-1')  # the date in origin is just a space-holder

我的数据集不包括日期。如何避免像我上面所做的那样设定一个假日期?这感觉不对,而且当我按时间绘制数据时也很烦人。

我知道有一些方法可以从像here这样的datatime对象中删除日期。但我的目标是选择某些在特定时间范围内的行,这意味着我需要使用pd.date_range()。此功能似乎在没有日期的情况下工作。

如果我只是在整个项目中使用一个假的约会,那就不是世界末日了。但我想知道是否有更优雅的方法来解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 02:01:22

我不明白为什么需要为此使用datetime64对象。您的时间列是一个数字,因此您可以非常容易地选择带有不等式的时间间隔。您也可以在没有问题的情况下绘制这些列。

样本数据

代码语言:javascript
复制
import pandas as pd
import numpy as np

np.random.seed(123)
df = pd.DataFrame({'Time': np.arange(0,1200,0.01),
                   'Col_A': np.random.randint(1,100,120000),
                   'Col_B': np.random.randint(1,10,120000)})

选择100到200秒之间的数据。

代码语言:javascript
复制
df[df.Time.between(100,200)]

产出:

代码语言:javascript
复制
         Time  Col_A  Col_B
10000  100.00     75      9
10001  100.01     23      7
...
19999  199.99     39      7
20000  200.00     25      2

谋反时间

代码语言:javascript
复制
#First 100 rows just for illustration
df[0:100].plot(x='Time')

转换为timedelta64

如果您真的愿意,可以将该列转换为timedelta64[ns]

代码语言:javascript
复制
df['Time'] = pd.to_datetime(df.Time, unit='s') - pd.to_datetime('1970-01-01')

print(df.head())
#             Time  Col_A  Col_B
#0        00:00:00     67      6
#1 00:00:00.010000     93      1
#2 00:00:00.020000     99      3
#3 00:00:00.030000     18      2
#4 00:00:00.040000     84      3

df.dtypes
#Time     timedelta64[ns]
#Col_A              int32
#Col_B              int32
#dtype: object
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51411971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档