我有一个像这样的数据框:
df = pd.DataFrame({'pop1': ['1000', '2000','3000','4000'],
'pop2': ['2000', '3000','2000','2000']},
index=['female','female','male','male'])
如何创建一个2 * 2数据框,它给出给定年份(两列)的给定年份(2列)中总人口的百分比?
答案 0 :(得分:4)
您需要先string
将int
投射到sum
,然后astype
投放100
并groupby
除以{{3} }}。最后一个df = df.astype(int)
a = df.groupby(level=0).sum()
print (a)
pop1 pop2
female 3000 5000
male 7000 4000
b = df.sum()
print (b)
pop1 10000
pop2 9000
dtype: int64
print (a.div(b).mul(100))
pop1 pop2
female 30.0 55.555556
male 70.0 44.444444
:
df = df.astype(int)
print (df.groupby(level=0).sum().div(df.sum()).mul(100))
pop1 pop2
female 30.0 55.555556
male 70.0 44.444444
与:
相同var obj = [{
"1": "one"
}, {
"2": "two"
}]
obj.forEach(function(item) {
Object.keys(item).forEach(function(key) {
console.log("key:" + key + "value:" + item[key]);
});
});
答案 1 :(得分:3)
这是一个班轮:
end of file
如果你已经在处理整数,那就更漂亮了:
(df.astype(int) / df.astype(int).sum()).groupby(level=0).sum() * 100
汇总,在将数据转换为整数后,然后将每个数字除以相关总体的总大小,将每个性别的权重相加,然后乘以100,使结果看起来像一个百分比。
答案 2 :(得分:3)