停止patsy dmatrix删除NaN行

时间:2018-08-01 18:30:50

标签: python patsy

我想使用patsy的def binomial_coeffs1(n, k): #top down DP if (k == 0 or k == n): return 1 if (memo[n][k] != -1): return memo[n][k] memo[n][k] = binomial_coeffs1(n-1, k-1) + binomial_coeffs1(n-1, k) return memo[n][k] def binomial_coeffs2(n, k): #bottom up DP for i in range(n+1): for j in range(min(i,k)+1): if (j == 0 or j == i): memo[i][j] = 1 else: memo[i][j] = memo[i-1][j-1] + memo[i-1][j] #end if #end for #end for return memo[n][k] def print_array(memo): for i in range(len(memo)): print('\t'.join([str(x) for x in memo[i]])) #main n = 5 k = 2 print("top down DP") memo = [[-1 for i in range(6)] for j in range(6)] nCk = binomial_coeffs1(n, k) print_array(memo) print("C(n={}, k={}) = {}".format(n,k,nCk)) print("bottom up DP") memo = [[-1 for i in range(6)] for j in range(6)] nCk = binomial_coeffs2(n, k) print_array(memo) print("C(n={}, k={}) = {}".format(n,k,nCk)) 函数生成一个设计矩阵,在其中保留具有NaN值的行。例如,以下代码将返回一个包含四行的设计矩阵,这是我们通常想要的。但是,在这种情况下,我希望dmatrix返回一个包含五行的矩阵,其中第一行将具有NaN值。

dmatrix

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

1 个答案:

答案 0 :(得分:0)

尝试:

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上的索引将与原始输入中的行相对应,因此您可以看到保留或删除了哪些行