我使用一个名为emails_visits
的数据帧: 大熊猫是进口的
Rep Doctor Date type
0 1 1 2021-01-25 email
1 1 1 2021-05-29 email
2 1 2 2021-03-15 email
3 1 2 2021-04-02 email
4 1 2 2021-04-29 email
30 1 2 2021-06-01 visit
5 1 3 2021-01-01 email
我想根据列类型中的值创建列"date_after",如果它等于"访问",我希望从"日期"列中看到日期,否则为空。
我使用此代码:
emails_visits["date_after"]=np.where(emails_visits["type"]=="visit",emails_visits["Date"],np.nan)
但是,它会引发一个错误:
emails_visits["date_after"]=np.where(emails_visits["type"]=="visit",emails_visits["Date"],np.nan)
File "<__array_function__ internals>", line 5, in where
TypeError: The DType <class 'numpy.dtype[datetime64]'> could not be promoted by <class 'numpy.dtype[float64]'>. 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: (<class 'numpy.dtype[datetime64]'>, <class 'numpy.dtype[float64]'>)
我该如何解决这个问题?
如果你愿意,你可以这样做。
email_visits['date after'] = email_visits.apply(lambda x: x[2] if x[3] == 'visit' else '', axis=1)
emails_visits
列Date
的类型datetime64
与np.nan
的类型np.float64
不兼容。由于您似乎使用 Pandas,因此您需要使用pd.NA
代替用于缺失值(而np.nan
表示该值不是数字,仅适用于浮点数)。其实这里最好不要用np.where
,而是用熊猫函数。这是一个简单的解决方案:
emails_visits["date_after"] = emails_visits["Date"].where(emails_visits["type"]=="visit")