【问题标题】:Python/Pandas: Want Different Times of Day to by Unique DateTimes in DataFrame IndexPython/Pandas:希望数据帧索引中的唯一日期时间到一天中的不同时间
【发布时间】:2019-02-15 02:49:10
【问题描述】:

我有一个 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 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

我想在 pandas DataFrame 中作为 DateTime 索引导入的第一列。第二列是数据,我称之为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)

删除了太多的行(在这个命令之后我最终只有六行!)。如何更改此行为,以便仅删除重复项?

感谢您的宝贵时间!

【问题讨论】:

    标签: python pandas datetime dataframe indexing


    【解决方案1】:

    您的问题是 drop_duplicates 正在根据列删除,在本例中为 'State'。您想保留不重复的索引,因此您应该改用 pandas.Index.duplicated 来掩盖原始的 DataFrame

    df[~df.index.duplicated(keep='first')]
    

    【讨论】:

    • ~ 是做什么的?
    • 完美!奇迹般有效。非常感谢!
    • 它否定/翻转布尔值。 pd.Index.duplicated 如果索引重复则返回True,如果索引唯一则返回False。但我们想要相反,所以~ 实现了这一点,将True 更改为FalseFalse 更改为True
    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2016-01-17
    • 2016-02-11
    • 1970-01-01
    • 2019-03-16
    • 2013-01-18
    相关资源
    最近更新 更多