这是此问题的扩展,其中OP想要知道如何删除单个列中的值为NaN的行.
我想知道如何删除2(或更多)列中的值都是 NaN的行.使用第二个答案创建的数据框:
In [1]: df = pd.DataFrame(np.random.randn(10,3))
In [2]: df.ix[::2,0] = np.nan; df.ix[::4,1] = np.nan; df.ix[::3,2] = np.nan;
In [3]: df
Out[3]:
0 1 2
0 NaN NaN NaN
1 2.677677 -1.466923 -0.750366
2 NaN 0.798002 -0.906038
3 0.672201 0.964789 NaN
4 NaN NaN 0.050742
5 -1.250970 0.030561 -2.678622
6 NaN 1.036043 NaN
7 0.049896 -0.308003 0.823295
8 NaN NaN 0.637482
9 -0.310130 0.078891 NaN
Run Code Online (Sandbox Code Playgroud)
如果我使用drop.na()
命令,特别是drop.na(subset=[1,2])
,那么它完成一个"或"类型drop并离开:
In[4]: df.dropna(subset=[1,2])
Out[4]:
0 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将大小为183x6的2D数组分配给新工作表,使用数组的值填充A1:G182中的空白单元格.作为参考,我的数组称为"目录",我要填充的空表称为"列表".
我尝试了两种不同的方法,一种是通过显式地将指定的范围分配给数组:
Worksheets("List").Range(Cells(1,1), Cells(UBound(Directory, 1) + 1, UBound(Directory, 2) + 1)) = Directory
Run Code Online (Sandbox Code Playgroud)
并且还尝试遍历数组中的每个条目:
For i = 0 To UBound(Directory, 1)
For j = 0 To UBound(Directory, 2)
Worksheets("List").Range(Cells(i + 1, j + 1), Cells(i + 1, j + 1)) = Directory(i,j)
Next j
Next i
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都会收到错误:
Run-time error '1004':
Application-defined or object defined error.
Run Code Online (Sandbox Code Playgroud)
有什么想法会发生什么?我感谢您的帮助.
我有一个数据框,有两列,我正在分组dplyr
,一列数月(如数字,例如1到12),以及几个列后面有统计数据(值不重要).一个例子:
ID_1 ID_2 month st1 st2
1 1 1 0.5 0.2
1 1 2 0.7 0.9
1 1 3 1.1 1.7
1 1 4 2.6 0.8
1 1 5 1.8 1.3
1 1 6 2.1 2.2
1 1 7 0.5 0.2
1 1 8 0.7 0.9
1 1 9 1.1 1.7
1 1 10 2.6 0.8
1 1 11 1.8 1.3
1 1 12 2.1 2.2
1 2 1 0.5 0.2
1 2 2 0.7 0.9
1 2 …
Run Code Online (Sandbox Code Playgroud) 完整的错误信息是:
Run Code Online (Sandbox Code Playgroud)ERROR: invalid input syntax for integer: "1e+06" SQL state: 22P02 Context: In PL/R function sample
我正在使用的查询是:
WITH a as
(
SELECT a.tract_id_alias,
array_agg(a.pgid ORDER BY a.pgid) as pgids,
array_agg(a.sample_weight_geo ORDER BY a.pgid) as block_weights
FROM results_20161109.block_microdata_res_joined a
WHERE a.tract_id_alias in (66772, 66773, 66785, 66802, 66805, 66806, 66813)
AND a.bldg_count_res > 0
GROUP BY a.tract_id_alias
)
SELECT NULL::INTEGER agent_id,
a.tract_id_alias,
b.year,
unnest(shared.sample(a.pgids,
b.n_agents,
1 * b.year,
True,
a.block_weights)
) as pgid
FROM a
LEFT JOIN results_20161109.initial_agent_count_by_tract_res_11 b
ON a.tract_id_alias = …
Run Code Online (Sandbox Code Playgroud)