DataFrame Python Pandas как применить функцию к каждому периоду времени - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть следующие dataframe,

df = pd.DataFrame({'col1':range(9), 'col2': list(range(7)) + [np.nan] *2}, 
    index = pd.date_range('1/1/2000', periods=9, freq='0.5S'))
df
Out[109]: 
                         col1  col2
2000-01-01 00:00:00.000     0   0.0
2000-01-01 00:00:00.500     1   1.0
2000-01-01 00:00:01.000     2   2.0
2000-01-01 00:00:01.500     3   3.0
2000-01-01 00:00:02.000     4   4.0
2000-01-01 00:00:02.500     5   5.0
2000-01-01 00:00:03.000     6   6.0
2000-01-01 00:00:03.500     7   NaN
2000-01-01 00:00:04.000     8   NaN

Как можно видеть выше, каждую секунду появляются две точки данных.Что я хотел бы сделать, так это для двух строк в секунду, если оба столбца в последней строке имеют правильный номер, эта строка будет выбрана;если какие-либо столбцы в последней строке недействительны, мы увидим, что предыдущая строка действительна для бот-столбца, если она действительна, мы выберем предыдущую строку, иначе пропустим вторую.Соответствующий кадр данных выглядит следующим образом:

                         col1  col2
2000-01-01 00:00:00.000     1   1.0
2000-01-01 00:00:01.000     3   3.0
2000-01-01 00:00:02.000     5   5.0
2000-01-01 00:00:03.000     6   6.0

Как этого добиться?

1 Ответ

0 голосов
/ 30 апреля 2019

Вот один из способов, используя reindex, после дропны мы переиндексируем, тогда оба столбца становятся NaN. В этой ситуации, если мы используем last, мы не будем выбирать ни один элемент из этой строки (соотнесенный с вашим предыдущим вопрос)

df.dropna().reindex(df.index).resample('1s').last().dropna()
Out[175]: 
                     col1  col2
2000-01-01 00:00:00   1.0   1.0
2000-01-01 00:00:01   3.0   3.0
2000-01-01 00:00:02   5.0   5.0
2000-01-01 00:00:03   6.0   6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...