C是数据系列,形状为(10000000),dtype为dtype(< M8 [ns])。
C.head()
以2015-10-05 02:21:36的形式显示数据,但我有一些2010-01-01形式的条目。如何在没有时间的情况下删除它们?我发现在这个“2010-01-01”类型中:小时,分钟和秒都是零,所以:
我试过这个
c[(c['time'].apply(lambda x:x.hour) != 0) & (c['time'].apply(lambda x:x.minute) != 0) & (c['time'].apply(lambda x:x.second) != 0)]
但是我可能会有一些参赛作品2015-10-05 00:00:00。这样我就消除了它们。这是最好和最正确的方法是什么?
答案 0 :(得分:1)
在这里一起回答你们的两个问题。这个和Pandas - Data Series - TypeError: Index must be DatetimeIndex。
In [1]: import pandas as pd
from datetime import time
In [2]: c = pd.Series(['2015-10-20 19:56:23', '2015-10-08', '2015-10-15 00:00:00', '2015-10-02 17:00:00'])
c
Out[2]: 0 2015-10-20 19:56:23
1 2015-10-08
2 2015-10-15 00:00:00
3 2015-10-02 17:00:00
dtype: object
In [3]: df = pd.DataFrame(list(c), columns=['time'])
df['time'] = pd.to_datetime(df['time'])
df
Out[3]: time
0 2015-10-20 19:56:23
1 2015-10-08 00:00:00
2 2015-10-15 00:00:00
3 2015-10-02 17:00:00
In [4]: clean_df = df[df['time'].dt.time != time(0,0,0)]
clean_df
Out[4]: time
0 2015-10-20 19:56:23
3 2015-10-02 17:00:00
In [5]: clean_df[(time(19,0,0) <= clean_df['time'].dt.time) &
(clean_df['time'].dt.time < time(20,0,0))]
Out[5]: time
0 2015-10-20 19:56:23
这会解决你的两个问题吗?
答案 1 :(得分:0)
更改为&#34;&amp;&#34;到&#34; |&#34;。当你有&#34;&amp;&#34;时,你删除这个08:50:00,这不是一个坏(00:00:00)时间。
c[(c['time'].apply(lambda x:x.hour) != 0) | (c['time'].apply(lambda x:x.minute) != 0) | (c['time'].apply(lambda x:x.second) != 0)]