Ошибка связана с выполнением длительных операций в основном потоке. Вы можете легко устранить проблему, используя AsynTask или Thread . Вы можете проверить эту библиотеку AsyncHTTPClient для лучшей обработки.
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onStart() {
// Called before a request is started
}
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
// Called when response HTTP status is "200 OK"
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// Called when response HTTP status is "4XX" (for example, 401, 403, 404)
}
@Override
public void onRetry(int retryNo) {
// Called when request is retried
}
});
Просто отбросьте их:
nms.dropna(thresh=2)
это приведет к потере всех строк, где есть по крайней мере два не NaN
, после чего вы можете отбросить его имя NaN
:
In [87]:
nms
Out[87]:
movie name rating
0 thg John 3
1 thg NaN 4
3 mol Graham NaN
4 lob NaN NaN
5 lob NaN NaN
[5 rows x 3 columns]
In [89]:
nms = nms.dropna(thresh=2)
In [90]:
nms[nms.name.notnull()]
Out[90]:
movie name rating
0 thg John 3
3 mol Graham NaN
[2 rows x 3 columns]
EDIT
На самом деле, глядя на то, что вы изначально хотите, вы можете сделать это без вызова dropna
:
nms[nms.name.notnull()]
UPDATE
Глядя на этот вопрос через 3 года, возникает ошибка, во-первых, thresh
arg ищет значения leas n
non NaN
, поэтому на самом деле выход должно быть:
In [4]:
nms.dropna(thresh=2)
Out[4]:
movie name rating
0 thg John 3.0
1 thg NaN 4.0
3 mol Graham NaN
Возможно, что я ошибся 3 года назад или что версия панд, с которой я работал, имела ошибку, оба сценария вполне возможны
Самый простой из всех решений:
filtered_df = df[df['name'].notnull()]
Таким образом, он отфильтровывает только строки, которые не имеют значений NaN в столбце «name».