0

我想使用 patsy 的dmatrix函数来生成一个设计矩阵,其中保留了具有 NaN 值的行。例如,下面的代码将返回一个四行的设计矩阵,这是我们通常想要的。但是,在这种情况下,我想dmatrix返回一个包含五行的矩阵,其中第一行将有一个 NaN 值。

import numpy as np
import pandas as pd
from patsy import dmatrix

df = pd.DataFrame({'x1': np.arange(5), 'x2': np.arange(5)})
dmatrix("~x1+x2.diff()", df)

或者,我会选择一个允许我检索已删除/保留的行号的答案。在上面的示例中,第 1 行是被删除的行,而第 2-5 行被保留。

4

1 回答 1

1

尝试:

dmatrix(..., NA_action=patsy.NAAction(NA_types=[]))

这告诉 patsy 不要将 NaN 视为表示缺失值,因此它将被传递。文档在这里:https ://patsy.readthedocs.io/en/latest/API-reference.html#missing-values

或者,我会选择一个允许我检索已删除/保留的行号的答案。

如果您使用return_type="dataframe",则 patsy 将返回一个包含您的设计矩阵的 pandas DataFrame,该 DataFrame 上的索引将对应于您原始输入中的行,因此您可以查看保留或删除了哪些行。

于 2018-08-01T19:43:52.747 回答