如何将值设置为 pandas 交叉表?
How to set value to pandas crosstab?
我只是在学习 pandas,我什至不知道可以为交叉表设置值。
例如:
我的数据框是:
data = [['Alice', 1, 2], ['Bob', 2, 5], ['Cameron', 3, 1],['Alice', 2, 5],['Bob', 3, 1]]
df = pd.DataFrame(data, columns = ['Name', 'Music_id', 'Music_type'])
The output of the data frame
现在在 df 上应用交叉表:
ct = pd.crosstab([df.Name,df.Music_id],df.Music_type)
我得到:
The output of crosstab
然而,这不是我所期望的。
我希望它以某种方式显示:
Music_id
1
2
3
Name
Alice
2
5
0
Bob
0
5
0
Cameron
0
0
1
基本上,我想要它而不是计算名称匹配 Music_id 的次数,而是给出第三列 (Music_type) 的相对值。我是否使用了正确的功能来做到这一点?任何建议表示赞赏!
您可以试试这个解决方案来解决:
pd.crosstab
pd.crosstab(df['Name'], columns = df['Music_id'], values = df['Music_type'], aggfunc = 'first').fillna(0)
# Output :
# Music_id 1 2 3
# Name
# Alice 2.0 5.0 0.0
# Bob 0.0 5.0 1.0
# Cameron 0.0 0.0 1.0
df.pivot
df.pivot(index = 'Name', columns = 'Music_id')['Music_type'].fillna(0)
# Output :
# Music_id 1 2 3
# Name
# Alice 2.0 5.0 0.0
# Bob 0.0 5.0 1.0
# Cameron 0.0 0.0 1.0
我只是在学习 pandas,我什至不知道可以为交叉表设置值。 例如: 我的数据框是:
data = [['Alice', 1, 2], ['Bob', 2, 5], ['Cameron', 3, 1],['Alice', 2, 5],['Bob', 3, 1]]
df = pd.DataFrame(data, columns = ['Name', 'Music_id', 'Music_type'])
The output of the data frame
现在在 df 上应用交叉表:
ct = pd.crosstab([df.Name,df.Music_id],df.Music_type)
我得到: The output of crosstab
然而,这不是我所期望的。
我希望它以某种方式显示:
Music_id | 1 | 2 | 3 |
---|---|---|---|
Name | |||
Alice | 2 | 5 | 0 |
Bob | 0 | 5 | 0 |
Cameron | 0 | 0 | 1 |
基本上,我想要它而不是计算名称匹配 Music_id 的次数,而是给出第三列 (Music_type) 的相对值。我是否使用了正确的功能来做到这一点?任何建议表示赞赏!
您可以试试这个解决方案来解决:
pd.crosstab
pd.crosstab(df['Name'], columns = df['Music_id'], values = df['Music_type'], aggfunc = 'first').fillna(0)
# Output :
# Music_id 1 2 3
# Name
# Alice 2.0 5.0 0.0
# Bob 0.0 5.0 1.0
# Cameron 0.0 0.0 1.0
df.pivot
df.pivot(index = 'Name', columns = 'Music_id')['Music_type'].fillna(0)
# Output :
# Music_id 1 2 3
# Name
# Alice 2.0 5.0 0.0
# Bob 0.0 5.0 1.0
# Cameron 0.0 0.0 1.0