Я действительно новичок в Python и Datascience.
У меня большой набор данных (с 100K + строками), в этом наборе данных у меня есть два столбца A
и B
. A
является столбцом Datetime, а B является строкой.
В столбце B есть некоторые значения NaN, я хочу заполнить эти значения NaN последним известным значением столбца B, учитывая условие, что моя пустая строка столбца B и ужезаполненные строки столбца B находятся в том же дне, месяце и году (столбец A).
Позвольте мне объяснить мою личность:
Допустим, это мой ввод:
df=pd.DataFrame({'A': ["2019-03-13 08:12:23", "2019-03-13 07:10:18", "2019-03-20 08:12:23", "2019-03-13 08:12:23", "2019-03-15 10:35:53", "2019-03-20 11:12:23"], 'B': ["B1", "B0", "B13", np.nan, "B10", "B12"]})
A B
0 2019-03-13 08:12:23 B1
1 2019-03-13 07:10:18 B0
2 2019-03-20 08:12:23 B13
3 2019-03-13 08:12:23 NaN
4 2019-03-15 10:35:53 B10
5 2019-03-20 11:12:23 B12
Я хочу заполнить значение NaN значением B1 (значение B, которое происходит в тот же день и имеет наибольшее время, при условии, что это «самое большое время» не опережает фактическое значение столбца A
).
Таким образом, мой вывод должен выглядеть следующим образом:
A B
0 2019-03-13 08:12:23 B1
1 2019-03-13 07:10:18 B0
2 2019-03-20 08:12:23 B13
3 2019-03-13 08:12:23 B1
4 2019-03-15 10:35:53 B10
5 2019-03-20 11:12:23 B12
Я пытался добиться этого безуспешно, лучшее, что я мог сделать, это сделать значение NaN равным B13, используя это:
df['B']=df['B'].replace({'B': {0: np.nan}}).ffill()
Ребята, скажите, пожалуйста, какой самый лучший и экономичный способ для этого?