Python/Pandas:希望一天中的不同时间在数据帧索引中按唯一的日期时间进行转换
我有一个csv文件Python/Pandas:希望一天中的不同时间在数据帧索引中按唯一的日期时间进行转换,python,pandas,datetime,dataframe,indexing,Python,Pandas,Datetime,Dataframe,Indexing,我有一个csv文件pruned_results.txt,看起来像这样: 2018-08-01 08:41:08, Wait for OK to Measure 2018-08-01 09:02:26, Wait for OK to Measure 2018-08-01 10:49:06, Wait for OK to Measure 2018-08-01 14:19:16, Wait for OK to Measure 2018-08-01 21:46:23, Wait for OK to Me
pruned_results.txt
,看起来像这样:
2018-08-01 08:41:08, Wait for OK to Measure
2018-08-01 09:02:26, Wait for OK to Measure
2018-08-01 10:49:06, Wait for OK to Measure
2018-08-01 14:19:16, Wait for OK to Measure
2018-08-01 21:46:23, Wait for OK to Measure
2018-08-02 01:11:06, Wait for OK to Measure
2018-08-02 02:47:11, Wait for OK to Measure
2018-08-02 04:05:41, Wait for OK to Measure
我要导入的第一列作为数据帧中的日期时间索引。第二列是数据,我称之为State
。我有以下代码:
import pandas as pd
df = pd.read_csv("pruned_result.txt", header=None, index_col=0)
df.index = pd.to_datetime(df.index)
df.columns = ['State']
df.index.names = ['Timestamp']
到目前为止,一切顺利。事实证明,我实际上有一行或两行具有相同的时间戳。这些对我来说都不重要。因此,我想在转到State
列之前删除重复项。我遇到的问题是,显然,如果行具有相同的日期,则它们被认为是重复的。但我希望,只有当它们一直匹配到一天中的同一秒时,它们才被视为复制品。就是代码
df.drop_duplicates(keep='first', inplace=True)
删除的行太多(在这个命令之后,我只剩下六行!)。如何更改此行为,以便只将重复项拖放到第二个
谢谢你的时间 您的问题是,
drop\u duplicates
基于列进行删除,在本例中,这只是'State'
。您希望保留非重复索引,因此应改为使用pandas.Index.duplicated
来屏蔽原始DataFrame
df[~df.index.duplicated(keep='first')]
~
做什么?太好了!工作起来很有魅力。多谢!它否定/翻转布尔值pd.Index.duplicated
如果索引重复,则返回True
;如果索引唯一,则返回False
。但是我们想要相反的结果,所以~
实现了这一点,将True
更改为False
,将False
更改为True