熊猫错误地识别索引重复项

时间:2018-09-06 14:42:18

标签: python pandas

使用CSV导入pandas文件会导致pandas在同一天将六分钟的Timestamps标识为一组重复项。例如:

from pandas import read_csv

#Format timestamps
def parser(x):
     return datetime.datetime.strptime(x,'%Y-%m-%d %H:%M')

series = read_csv('data', header=0, index_col=0, squeeze=True, date_parser=parser)
print(series.duplicated())

返回:

<bound method Series.duplicated of t>
2013-02-01 00:00:00    3.959
2013-02-01 00:06:00    3.924
2013-02-01 00:12:00    3.892
2013-02-01 00:18:00    3.865
2013-02-01 00:24:00    3.842
                       ...

但是,我知道序列索引已将时间值正确存储在Timestamps内,因为:

print(series.index[0].time())

返回:

00:00:00

对于我的一生,我无法弄清楚。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

我将添加我的评论作为答案。我将您的输出用作输入文件:

 2013-02-01 00:00:00,    3.959
 2013-02-01 00:06:00,    3.924
 2013-02-01 00:12:00,    3.892
 2013-02-01 00:18:00,    3.865
 2013-02-01 00:24:00,    3.842

并如下修改日期解析器:

def parser(x):
     return datetime.datetime.strptime(x,'%Y-%m-%d %H:%M:%S')

重复通话的结果如下:

series.duplicated()
Out[7]:
2013-02-01 00:00:00
2013-02-01 00:06:00    False
2013-02-01 00:12:00    False
2013-02-01 00:18:00    False
2013-02-01 00:24:00    False
Name:     3.959, dtype: bool

哪个是正确的

您可以使用以下方法选择所有重复的条目:

dups = series[series.duplicated()]

以及所有不重复的条目:

not_dups = series[~series.duplicated()]