Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫中条件行中的计数值频率_Python_Pandas_Dataframe_Count_Pandas Groupby - Fatal编程技术网

Python 熊猫中条件行中的计数值频率

Python 熊猫中条件行中的计数值频率,python,pandas,dataframe,count,pandas-groupby,Python,Pandas,Dataframe,Count,Pandas Groupby,我有一个数据帧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 k

我有一个数据帧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

您可以使用
pd.crosstab

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

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