【发布时间】:2016-12-04 09:01:01
【问题描述】:
当我尝试根据日期时间索引的值对时间序列执行删除复制时,我的头撞到了墙上。
我的功能如下:
def csv_import_merge_T(f):
dfsT = [pd.read_csv(fp, index_col=[0], parse_dates=[0], dayfirst=True, names=['datetime','temp','rh'], header=0) for fp in files]
dfT = pd.concat(dfsT)
#print dfT.head(); print dfT.index; print dfT.dtypes
dfT.drop_duplicates(subset=index, inplace=True)
dfT.resample('H').bfill()
return dfT
调用者:
inputcsvT = ['./input_csv/A08_KI_T*.csv']
for csvnameT in inputcsvT:
files = glob.glob(csvnameT)
print ('___'); print (files)
t = csv_import_merge_T(files)
print csvT
我收到错误提示
NameError: global name 'index' is not defined
怎么了?
更新: 当 csv 输入文件(将被连接)重叠时,似乎会出现此问题。
inputcsvT = ['./input_csv/A08_KI_T*.csv'] 获取文件
A08_KI_T5
28/05/2015 17:00,22.973,24.021
...
2015 年 8 月 10 日 13:30,24.368,45.974
A08_KI_T6
2015 年 8 月 10 日 14:00,24.779,41.526
...
10/02/2016 17:00,22.326,41.83
它运行正确,而:inputcsvT = ['./input_csv/A08_LR_T*.csv'] 聚集
A08_LR_T5
28/05/2015 17:00,22.493,25.62
...
2015 年 8 月 10 日 13:30,24.296,44.596
A08_LR_T6
28/05/2015 17:00,22.493,25.62
...
10/02/2016 17:15,21.991,38.45
这会导致错误。
【问题讨论】:
-
实际上你想在这里实现什么?例如,如果您有重复项,是否要修剪重复项的 df?您可以调用
reset_index并调用drop_duplicates传入index列名,这将删除重复项 -
不幸的是,如果我这样做,我会收到错误:
KeyError"DatetimeIndex(... ...dtype='datetime64[ns]', name=u'datetime', length=50276, freq=None) not in index" -
我下面的建议有用吗?您可能需要确定索引名称,默认为“索引”,但您可能需要先获取名称
-
你可以试试
dfT[~dfT.index.duplicated()]
标签: datetime pandas duplicates time-series