Python Pandas.asfreq给出了一个重复的索引错误

Python Pandas.asfreq给出了一个重复的索引错误,python,pandas,Python,Pandas,我试图用Pandas的ffill制作一些常规的时间序列,但是我得到了一个非唯一的索引错误 这是我的密码: for d in data_types: series = df[df['datatype'] == d]['measurementvalue'].values times = df[df['datatype'] == d]['displaydate'].values data_series = pd.Series(series, index = times)

我试图用Pandas的
ffill
制作一些常规的时间序列,但是我得到了一个非唯一的索引错误

这是我的密码:

for d in data_types:
    series = df[df['datatype'] == d]['measurementvalue'].values
    times = df[df['datatype'] == d]['displaydate'].values
    data_series = pd.Series(series, index = times)
    data_series.drop_duplicates(inplace = True)
    data_series.asfreq('30Min', method = 'ffill')
    all_series.append(data_series)
由于对一个特定的
数据类型调用
asfreq
,我得到了以下错误:

ValueError: cannot reindex a non-unique index with a method or limit
这适用于
drop\u duplicates
导致长度从2119下降到1299的一组数据,这表明它是最密集的(时间)值

==========

编辑 我做了一些探索,通过将时间延迟缩短到索引中最近的一秒,缩小了问题的范围。我可以看到当两行落入同一秒时创建的“重复”索引。我猜这些都是令人不快的争吵

2016-03-02 04:03:29.693    8.250347
2016-03-02 04:03:29.693    7.478983
2016-03-06 00:19:30.183    45.97248
2016-03-06 00:19:30.183    24.06088
2016-03-14 02:44:58.783    9.169300
2016-03-14 02:44:58.783    4.221998
2016-03-18 21:54:20.097    73.80586
2016-03-24 16:41:19.825    3.608202
2016-03-24 16:41:19.825    3.887996
2016-03-25 03:35:57.197    4.974968
2016-03-25 03:35:57.197    5.638140
2016-04-02 11:18:27.290    7.923712
2016-04-02 11:18:27.290    6.143240
2016-04-10 19:59:54.677     3.143636
2016-04-10 19:59:54.686    14.222390

降低价值的最佳方式是什么?假设我想编写一个自定义方法,它向我发送给定索引值的所有重复值,并返回该索引值应使用的单个值。我怎样才能做到这一点呢?

试试这样的方法,但由于您没有包含任何数据,这只是一个开始

for d in data_types:
        rawDf       = df[df['datatype'] == d]
        data_series = rawDf[['measurementvalue','displaydate']]
        data_series.set_index('displaydate',drop=False, inplace = True)
        data_series.drop_duplicates(inplace = True)
        data_series.asfreq('30Min', method = 'ffill')
        all_series.append(data_series)

如果要保留每个日期时间的最大值。首先将date_time设置为列并使用

df.groupby('date_time').max()

如果希望始终保留第一个或最后一个条目,则:

这意味着您的数据帧中有重复的索引。要查看它:
df[df.index.duplicated()]
也要看一看,并且在发布时,最好包括使您的问题成为“@michael_j_ward”的示例数据。谢谢您的建议。我不知道那个方法调用。了解未来很方便。不幸的是,这对我没有帮助,因为原始索引没有被复制。它们只有在我施加频率时才会被复制。我现在正在添加更多数据。谢谢你的建议,但这仍然会产生错误。我想我现在知道了错误的来源,虽然我不知道修复方法。我现在正在编辑我的问题,以包含有关数据的更多信息。正确,那么我如何编写逻辑来删除值,以及如果我想合并它们的值,该怎么办?假设我想保留max.df.groupby('displaydate')['measurementvalue'].max()