【问题标题】:create a dataframe from for loop output从 for 循环输出创建数据帧
【发布时间】:2019-05-11 03:13:20
【问题描述】:

我需要从以下 for 循环的输出中创建一个数据框。

我尝试编写一个 for 循环,但我不知道如何将结果转换为数据框。我还需要计算每个活动的出现次数。

for c in final_merged.columns:
 print(final_merged[c].value_counts())

输出如下所示:

golf     3
soccer   3
fishing  1
soccer   2

但是这个输出不是数据框。

我需要输出如下所示:

activity  count
golf        3
soccer      5
fishing     1

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    修正你的输出

    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)
    

    【讨论】:

    • 谢谢! final_merged.stack().value_counts() 有效,但是如何使输出为 2 列?最终,我希望能够总结计数的总数。
    • @Ashley final_merged.stack().value_counts().to_frame('count').reset_index()
    • 我认为您需要更改 DataFrame 的代码,而不是 Series。
    【解决方案2】:

    如果使用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')
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2019-05-12
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多