我正在尝试使用数值作为 Pandas pivot_table 上的列。问题在于,由于每个数字大部分都是唯一的,因此生成的 pivot_table 作为聚合数据的方式不是很有用。
这是我目前所拥有的(假数据示例):
import pandas as pd
df = pd.DataFrame({'Country': ['US', 'Brazil', 'France', 'Germany'],
'Continent': ['Americas', 'Americas', 'Europe', 'Europe'],
'Population': [321, 207, 80, 66]})
pd.pivot_table(df, index='Continent', columns='Population', aggfunc='count')
这是结果的图像 .
如何根据我的列将我的值分组到范围内?
换句话说,我如何统计所有人口...<100、100-200、>300 的国家/地区?
最佳答案
使用 pd.cut:
df = df.assign(PopGroup=pd.cut(df.Population,bins=[0,100,200,300,np.inf],labels=['<100','100-200','200-300','>300']))
输出:
Continent Country Population PopGroup
0 Americas US 321 >300
1 Americas Brazil 207 200-300
2 Europe France 80 <100
3 Europe Germany 66 <100
pd.pivot_table(df, index='Continent', columns='PopGroup',values=['Country'], aggfunc='count')
输出:
Country
PopGroup 200-300 <100 >300
Continent
Americas 1.0 NaN 1.0
Europe NaN 2.0 NaN
关于python - Pandas pivot_table 按值对列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419851/