Понижение частоты данных вне временного ряда - PullRequest
0 голосов
/ 25 июня 2018

У меня есть два кадра данных, где оба являются данными подсчета дней относительно некоторого времени начала.Один кадр данных представляет собой данные сигнала, дискретизированные с более высокой скоростью, по сравнению с данными сигнала другого кадра данных.Общие временные рамки одинаковы для обоих информационных кадров.Мой вопрос заключается в том, какой подход я могу использовать, чтобы уменьшить выборку с большим количеством строк, чтобы соответствовать количеству строк.фрейм данных выглядит следующим образом: (где первый столбец - количество дней от определенного времени начала)

    Days  Data at 1hz
0  0.958        83.63
1  0.958        83.08
2  0.958        82.45
3  0.958        81.83
4  0.959        81.18

    Days  Data at 4hz
0  0.958        0.028
1  0.958        0.028
2  0.958        0.027
3  0.958        0.029
4  0.958        0.028

Я пробовал функцию pandas.resample(), но, очевидно, она работает только для индекса отметки времени.А также функция rolling() делает другие значения в окне = 8 (разница в соотношении выборки данных1 и данных2) как Nan и не удаляет строки.

Есть ли способ, я могу применитьmean() или какой-то другой способ сделать их одинаковыми, удалив несколько строк?

1 Ответ

0 голосов
/ 25 июня 2018

Использование rolling - хорошая идея, после которой вам не хватает dropna, чтобы избавиться от лишних строк.Вот пример с 3 строками на дату в df1 и 8 строками на дату в df2:

df1 = pd.DataFrame({'Date':[0.958]*3 + [0.959]*3, 
                    'Data_1': [83.63,83.08,82.45,81.83,82.76,84.97]})
df2 = pd.DataFrame({'Date':[0.958]*8 + [0.959]*8, 
                    'Data_4': [0.028,0.028,0.027,0.029]*4})

Теперь вы хотите удалить 5 строк в df2 на дату, чтобы получить только 3строки, как в df1, вы получите с помощью groupby, rolling и dropna.Функцию mean можно изменить, если вы хотите что-то еще, а reset_index больше для косметики.

df3 = df2.groupby('Date').rolling(window=6).mean().dropna().reset_index(drop=True)

, которая дает результат для df3

     Data_4   Date
0  0.028000  0.958
1  0.027833  0.958
2  0.028000  0.958
3  0.028000  0.959
4  0.027833  0.959
5  0.028000  0.959

только3 строки на дату из данных в df2.

Обратите внимание, что в rolling, window = 6, который представляет собой разницу строк на дату между df2 и df1 плюс 1 , в противном случае вы получите одну дополнительную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...