我需要从以下for循环的输出中创建一个数据框。
我尝试编写一个for循环,但是我不知道如何将结果转换为数据帧。我还需要计算每个活动的发生次数。
@Override
protected void onPreExecute()
{
listview1.setVisibility(View.GONE);
}
@Override
protected void onPostExecute(String r)
{
listview1.setVisibility(View.VISIBLE);
new call_data_of_listview2().execute();
}
@Override
protected String doInBackground(String... params)
{
-- code to retrieve data from database
}
输出看起来像这样:
for c in final_merged.columns:
print(final_merged[c].value_counts())
但是此输出不是数据帧。
我需要输出看起来像这样:
golf 3
soccer 3
fishing 1
soccer 2
答案 0 :(得分:0)
修复您的输出
output.sum(level=0)
或使用stack
final_merged.stack().value_counts()
或以numpy
的方式unique
v,c=np.unique(df.values.ravel(),return_counts =True)
pd.Series(c,index=v)
答案 1 :(得分:0)
如果使用value_counts
,则返回唯一索引,因此不需要聚合sum
。
对于DataFrame,将Series.rename_axis
与Series.reset_index
结合使用:
for c in final_merged.columns:
print(final_merged[c].value_counts().rename_axis('activity').reset_index(name='count'))
如果需要在所有列中使用DataFrame,请添加DataFrame.stack
:
df = final_merged.stack().value_counts().rename_axis('activity').reset_index(name='count')