Я работаю с данными потокового потока, загруженными в pandas из файлов .csv. Мне нужно извлечь даты первой и последней действительных записей значений потокового потока. Я пытаюсь получить индекс первого и последнего действительных (не NaN) значений потокового потока, а затем использовать функцию pd.at[]
. Я использую:
pandas.DataFrame.first_valid_index
и pandas.DataFrame.last_valid_index
.
Однако указанные выше функции не могут возвращать индекс для некоторых файлов и выдают output = none
. Причем индекс диапазона и его тип одинаков для всех файлов. Пожалуйста, проверьте пример ниже:
station2 = pd.read_csv('../flow/IWM-gauge-0002.csv')
station4 = pd.read_csv('../flow/IWM-gauge-0004.csv')
print('Station 2 index type :',type(station2.index))
print('Station 4 index type :',type(station4.index))
print('Station 2 index : ',station2.index)
print('Station 4 index :',station4.index)
Запуск приведенного выше кода дает результат как:
Station 2 index type : <class 'pandas.core.indexes.range.RangeIndex'>
Station 4 index type : <class 'pandas.core.indexes.range.RangeIndex'>
Station 2 index : RangeIndex(start=0, stop=22333, step=1)
Station 4 index : RangeIndex(start=0, stop=22333, step=1)
Однако, если я попытаюсь получить первый или последний действительный индекс для обоих фреймов данных:
first_validx_2 = station2['Streamflow (cumecs)'].first_valid_index()
first_validx_4 = station4['Streamflow (cumecs)'].first_valid_index()
last_validx_2 = station2['Streamflow (cumecs)'].last_valid_index()
last_validx_4 = station4['Streamflow (cumecs)'].last_valid_index()
print('First valid idx in station 2',first_validx_2)
print('First valid idx in station 4',first_validx_4)
print('Last valid idx in station 2',last_validx_2)
print('Last valid idx in station 4',last_validx_4)
Я получаю следующий результат:
First valid idx in station 2 19780
First valid idx in station 4 None
Last valid idx in station 2 21885
Last valid idx in station 4 None
Пожалуйста, объясните, где я ошибаюсь? Как мне решить эту проблему?