我有一个带有"日期"列的Pandas DataFrame.现在我需要过滤掉DataFrame中具有接下来两个月之外的日期的所有行.基本上,我只需要保留未来两个月内的行.
实现这一目标的最佳方法是什么?
我正在阅读带有多个日期时间列的csv文件.我需要在读取文件时设置数据类型,但是日期时间似乎是个问题.例如:
headers = ['col1', 'col2', 'col3', 'col4']
dtypes = ['datetime', 'datetime', 'str', 'float']
pd.read_csv(file, sep='\t', header=None, names=headers, dtype=dtypes)
Run Code Online (Sandbox Code Playgroud)
运行时出错:
TypeError:数据类型"datetime"未被理解
事后转换列,通过pandas.to_datetime()不是一个选项,我不知道哪些列将是datetime对象.该信息可以改变,并来自我的dtypes列表中的任何信息.
或者,我尝试使用numpy.genfromtxt加载csv文件,在该函数中设置dtypes,然后转换为pandas.dataframe但它会使数据变得混乱.任何帮助是极大的赞赏!
我有一个csv文件,其时间列表示POSIX时间戳,以毫秒为单位.当我在pandas中读取它时,它正确地将其读作Int64,但我想将其转换为DatetimeIndex.现在我首先将其转换为datetime对象,然后将其转换为DatetimeIndex.
In [20]: df.time.head()
Out[20]:
0 1283346000062
1 1283346000062
2 1283346000062
3 1283346000062
4 1283346000300
Name: time
In [21]: map(datetime.fromtimestamp, df.time.head()/1000.)
Out[21]:
[datetime.datetime(2010, 9, 1, 9, 0, 0, 62000),
datetime.datetime(2010, 9, 1, 9, 0, 0, 62000),
datetime.datetime(2010, 9, 1, 9, 0, 0, 62000),
datetime.datetime(2010, 9, 1, 9, 0, 0, 62000),
datetime.datetime(2010, 9, 1, 9, 0, 0, 300000)]
In [22]: pandas.DatetimeIndex(map(datetime.fromtimestamp, df.time.head()/1000.))
Out[22]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-09-01 09:00:00.062000, ..., 2010-09-01 09:00:00.300000]
Length: 5, Freq: None, Timezone: None
Run Code Online (Sandbox Code Playgroud)
有这样一种惯用的方式吗?更重要的是,这是在熊猫中存储非唯一时间图的推荐方法吗?