从for循环输出创建数据框

时间:2019-05-11 03:13:21

标签: python pandas

我需要从以下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

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_axisSeries.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')