Панды группируются и фильтруются по

#python #pandas

Вопрос:

data У меня есть фрейм данных, и у меня есть вызываемый datetime столбец created_at и вызываемый столбец text . Я хотел бы извлечь строки, created_at день которых совпадает с днем ввода (из заданного диапазона), а также text значение, начинающееся с буквы «а».

Мой фрейм данных довольно большой, поэтому я подумал, что сначала я сгруппирую по дням, а затем использую сгруппированный фрейм данных для фильтрации для каждого отдельного дня и текста.

 data.set_index('created_at').groupby(pd.Grouper(freq='D'))
 

Однако я не уверен, как применить окончательный фильтр. (Я также не уверен, что это лучший способ достичь того, чего я хотел)

Комментарии:

1. групповой фильтр ? При очень минимальном понимании того, как выглядит ваш фрейм данных и чего вы хотите достичь, трудно определить, является ли это лучшим способом достижения вашей цели.

2. @HenryEcker Я хочу получить все created_at совпадения, которые я даю в день text столбец также должен начинаться с «а». Единственная проблема заключается в том, что сам фрейм данных содержит много строк, и я хочу выполнять эту операцию в течение многих дней.

Ответ №1:

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

 input = input("input datetime :  ")
created_at_column = df.loc[:, created_at] # df is your DataFrame
[x for x in list(created_at_column) if x == input]


    
 

Ответ №2:

Как сказал @HenryEcker, трудно определить лучший выбор для вас. Я генерирую 1836 дат между 2021-05-01 и 2021-05-31 и 1836 слов из nltk (нижний регистр)

 # criteria
input_day = "2021-05-30"
first_letter = "a"

# Pandas to Numpy
created_at = data["created_at"].dt.date.values.astype("datetime64[D]")
text = data["text"].values.astype("<U1")  # keep only the first letter

# Filter
out = data.iloc[np.nonzero((created_at == np.datetime64(input_day))
                           amp; (text == first_letter))]
 
 >>> out
                        created_at            text
1794 2021-05-30 07:54:46.103542234    alienability
1819 2021-05-30 17:43:19.455040872  anthologically
1820 2021-05-30 18:06:51.989100817     appreciativ
1830 2021-05-30 22:02:17.329700272     acoustician
1832 2021-05-30 22:49:22.397820163       afternote