您好,亲爱的社区,我有一个非常具体的问题,可惜我无法解决。目前我要转换的DataFrame看起来像这样。
JSONArray ja = new JSONArray(data);
for (int i = 0; i < ja.length(); i++) {
JSONObject jo = (JSONObject) ja.get(i);
singleParsed = "\n" + "\n" + "NAME : " + jo.get("name") + "\n" +
"PASSWORD : " + jo.get("password") + "\n" +
"CONTACT : " + jo.get("contact") + "\n" +
"COUNTRY : " + jo.get("country") + "\n";
dataParsed = dataParsed + singleParsed + "\n";
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
try {
return ParseMoviesJsonString(dataParsed);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
private ArrayList<User> ParseMoviesJsonString(String dataParsed) throws JSONException {
final String json_name = "name";
final String json_password = "password";
final String json_contact = "contact";
final String json_country = "country";
ArrayList<User> list = new ArrayList<>();
JSONObject MovieJson = new JSONObject(dataParsed);//MovieJson got the data and then skipps the followinglines and directly go to onPostExecute
JSONArray MovieArray = MovieJson.getJSONArray(dataParsed);
for (int i = 0; i < MovieArray.length(); i++) {
JSONObject result_movie = MovieArray.getJSONObject(i);
User movie = new User();
movie.setU_name(result_movie.getString(json_name));
movie.setU_password(result_movie.getString(json_password));
movie.setU_contact(result_movie.getString(json_contact));
movie.setU_country(result_movie.getString(json_country));
list.add(movie);
}
return list;
}
@Override
protected void onPostExecute(ArrayList<User> list) {// list : null
super.onPostExecute(list);
adapter.updateList(list);
adapter.notifyDataSetChanged();
}
}
}
转换后,它应该看起来像这样。
df_larceny
CATEGORY INCIDENTYEAR INCIDENTMONTH
LARCENY 2009 1
LARCENY 2009 1
LARCENY 2009 1
.............................
.............................
LARCENY 2016 11
LARCENY 2016 12
LARCENY 2016 12
LARCENY 2016 12
基本上,我想计算每年每个月发生盗窃的频率。
我以前尝试过this tutorial,可惜没有运气。
我也使用value_counts()尝试了各种方法,但不幸的是没有运气。
出于最后的绝望,我手动为另一个看起来像这样的DataFrame做了
COUNT INCIDENTYEAR INCIDENTMONTH
234 2009 1
453 2009 2
847 2009 3
943 2009 4
958 2009 5
.............................
.............................
324 2016 11
372 2016 12
241 2016 12
412 2016 12
我每个月都要这样做,并在最后创建了一个新的DataFrame,即使对于像我这样的业余爱好者来说,效率也太低了。 我希望任何人都可以在这里帮助我。
答案 0 :(得分:2)
也许是这样的:
df_larceny[df_larceny['CATEGORY'] == 'LARCENY'].groupby(['INCIDENTYEAR', 'INCIDENTMONTH']).count().reset_index()