【问题标题】:counting value frequency in conditional rows in PandasPandas条件行中的计数值频率
【发布时间】:2017-08-04 03:03:06
【问题描述】:

我有一个数据框 df,例如:

Name   title freq
A       k1  1
A       k1  1
A       k1  2
A       k1  2
A       k1  2
M       k1  1
M       k1  1
M       k1  1
M       k1  2
M       k1  2
M       k1  2
M       k1  2
A       k2  1
A       k2  1
A       k2  1
A       k2  2
A       k2  2
A       k2  2
A       k2  2
M       k2  1
M       k2  1
M       k2  1
M       k2  1
M       k2  1
M       k2  2
M       k2  2
M       k2  2
M       k2  2
M       k2  2
M       k2  2

我想创建如下输出:

title name  freq_1  freq_2
k1    A      2         3
k1    M      3         4
k2    A      3         4
k2    M      5         6

我试过了: df.groupby(['title','name', 'freq']).size().reset_index(name='Number')

结果和我想要的有点不同:

      title    name            freq   Number
0        k1     A               1       2
1        k1     A               2       3
2        k1     M               1       3
3        k1     M               2       4
4        k2     A               1       3
5        k2     A               2       4
6        k2     M               1       5
7        k2     M               2       6

【问题讨论】:

    标签: python pandas dataframe count pandas-groupby


    【解决方案1】:

    你可以使用pd.crosstab:

    (pd.crosstab([df.Name, df.title], df.freq, colnames=[''])
       .rename(columns="freq_{}".format).reset_index())
    

    【讨论】:

      【解决方案2】:

      快速回答

      df.groupby(['Name', 'title', 'freq']).size().unstack()
      
      freq        1  2
      Name title      
      A    k1     2  3
           k2     3  4
      M    k1     3  4
           k2     5  6
      

      更多格式

      df.groupby(['Name', 'title', 'freq']).size().unstack() \
        .rename(columns='freq_{}'.format).rename_axis(None, 1).reset_index()
      
        Name title  freq_1  freq_2
      0    A    k1       2       3
      1    A    k2       3       4
      2    M    k1       3       4
      3    M    k2       5       6
      

      【讨论】:

        猜你喜欢
        • 2016-06-30
        • 2020-05-16
        • 2021-09-02
        • 2020-06-22
        • 2016-10-15
        • 1970-01-01
        • 2019-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多