Pandas — работают со столбцом, отфильтрованным по другому столбцу в наборе данных

#python #pandas

#питон #панды #python #pandas

Вопрос:

У меня есть фрейм данных с несколькими столбцами с датами, отформатированными как datetime.

Я пытаюсь получить минимальное / максимальное значение даты, основываясь на другом столбце даты, равном NaN

На данный момент я делаю это в два отдельных этапа:

 temp_df = df[(df['date1'] == np.nan)]
max_date = max(temp_df['date2'])
temp_df = None
  

Я получаю желаемый результат, но я использую ненужный временный фрейм данных.

Как я могу сделать это без него? Есть ли какие-нибудь справочные материалы для чтения по этому поводу?

Спасибо

Ответ №1:

Вот MCVE, с которым можно играть, чтобы получить статистику из других столбцов, где значение в единице isnull() (NaN или NaT). Это можно сделать однострочным.

 import pandas as pd
import numpy as np
print(pd.__version__)

# sample date columns
daterange1 = pd.date_range('2017-01-01', '2018-01-01', freq='MS')
daterange2 = pd.date_range('2017-04-01', '2017-07-01', freq='MS')
daterange3 = pd.date_range('2017-06-01', '2018-02-01', freq='MS')
df1 = pd.DataFrame(data={'date1': daterange1})
df2 = pd.DataFrame(data={'date2': daterange2})
df3 = pd.DataFrame(data={'date3': daterange3})
# jam them together, making NaT's in non-overlapping ranges
df = pd.concat([df1, df2, df3], axis=0, sort=False)
df.reset_index(inplace=True)

max_date = df[(df['date1'].isnull())]['date2'].max()
print(max_date)