Я хочу заполнить np.nan
0
в pd.DataFrame
, когда столбцы удовлетворяют определенным условиям.
import pandas as pd
import numpy as np
from datetime import datetime as dt
df = pd.DataFrame({'A': [np.datetime64('NaT'), dt.strptime('201803', '%Y%m'), dt.strptime('201804', '%Y%m'), np.datetime64('NaT'), dt.strptime('201806', '%Y%m')],
'B': [1, np.nan, 3, 4, np.nan],
'C': [8, 9, np.nan, 4, 1]})
A B C
0 NaT 1.0 8.0
1 2018-03-01 NaN 9.0
2 2018-04-01 3.0 NaN
3 NaT 4.0 4.0
4 2018-06-01 NaN 1.0
Когда df['A'] >= dt.strptime('201804', '%Y%m')
, я хочу заполнить np.nan
0
в столбцах B и C. Я хочу получить фрейм данных, как показано ниже.
A B C
0 NaT 1.0 8.0
1 2018-03-01 NaN 9.0
2 2018-04-01 3.0 0.0
3 NaT 4.0 4.0
4 2018-06-01 0.0 1.0
Я пытался
m = df[df['A'] >= dt.strptime('201804', '%Y%m')][['B', 'C']].isnull()
df.mask(m, 0, inplace=True)
и получил ошибку Cannot do inplace boolean setting on mixed-types with a non np.nan value
.Я думаю, что эта ошибка вызвана наличием NaT
в столбце A ...
Есть ли другой способ получить желаемый фрейм данных с помощью метода mask
?