Получить минимальное значение даты из сравнения текущего столбца строки и следующего столбца строки в пандах - PullRequest
0 голосов
/ 14 февраля 2019

enter image description here

У меня есть pandas df с 3 столбцами: col1, col2, col3.Значения в столбцах 1 и 3 могут быть пустыми в некоторых случаях.Столбец col2 начинается пустым.Цель состоит в том, чтобы заполнить col2.Я хотел бы повторить каждую строку, чтобы сравнить каждое значение col3 текущей строки с col1 в следующей строке.col2 должно стать наименьшим значением даты (как вы можете видеть на картинке).

Как я могу сделать это в пандах?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Использование np.min с shift

Пример данных

import pandas as pd
import numpy as np

df = pd.DataFrame({'col1': ['2013-12-19', '2014-12-16', '2015-02-06', '2016-01-22', 
                            '2016-02-24', '2016-04-25', '2017-04-13'],
                   'col3': ['2014-06-28', '2015-10-07', '2015-07-19', '2016-02-11', 
                            '2016-04-28', '2017-02-28', '2018-02-15']})
df = df.apply(pd.to_datetime)

Код

df['col2'] = np.min([df.col1.shift(-1).values, df.col3.values], axis=0)

Выход df:

        col1       col3       col2
0 2013-12-19 2014-06-28 2014-06-28
1 2014-12-16 2015-10-07 2015-02-06
2 2015-02-06 2015-07-19 2015-07-19
3 2016-01-22 2016-02-11 2016-02-11
4 2016-02-24 2016-04-28 2016-04-25
5 2016-04-25 2017-02-28 2017-02-28
6 2017-04-13 2018-02-15 2018-02-15
0 голосов
/ 14 февраля 2019

Мои извинения ... Я неправильно понял ваш вопрос.Я признаю, что прочитал его, прочитав - извините!

Это должно сработать ...

for idx in range(len(df)-1):
    df.loc[idx, 'col2'] = min(df.loc[idx, 'col3'], df.loc[idx+1, 'col1'])

Это оставит последнее значение в col2 как nan из-засмещение итерации.

Дайте мне знать, если это поможет!

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