С пандами, как мне использовать np.where с обнуляемым столбцом даты и времени?Python

Программы на Python
Ответить
Anonymous
 С пандами, как мне использовать np.where с обнуляемым столбцом даты и времени?

Сообщение Anonymous »

Код: Выделить всё

np.where
отлично подходит для панд, поскольку это векторизованный способ изменения столбца в зависимости от условия.
Но хотя он, похоже, отлично работает с собственными типами np, он с датами не очень хорошо сочетается.
Это отлично работает:

Код: Выделить всё

>>> df1 = pd.DataFrame([["a", 1], ["b", np.nan]], columns=["name", "num"])
>>> df1
name  num
0    a  1.0
1    b  NaN
>>> np.where(df1["num"] < 2, df1["num"], np.nan)
array([ 1., nan])
Но это не так:

Код: Выделить всё

>>> df2 = pd.DataFrame([["a", datetime.datetime(2024,1,2)], ["b", np.nan]], columns=["name", "date"])
>>> df2
name       date
0    a 2024-01-02
1    b        NaT
>>> np.where(df["date"] < datetime.datetime(2024,3,1), df["date"], np.nan)
Traceback (most recent call last):
File "
", line 1, in 
np.where(df["date"] < datetime.datetime(2024,3,1), df["date"], np.nan)
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
numpy.exceptions.DTypePromotionError: The DType  could not be promoted by . This means that no common DType exists for the given inputs. For example they cannot be stored in a single array unless the dtype is `object`. The full list of DTypes is: (, )
>>>
Как правильно векторизовать последнюю операцию?


Подробнее здесь: https://stackoverflow.com/questions/791 ... ime-colums
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»