大家好,我是熊猫新手。我需要一些关于如何为我所需的输出编写pandas查询的帮助。
我想检索输出数据 当0 < minimum_age&lt; 10我需要得到0到10的总和(人口) 当10&lt; minimum_age&lt; 20我需要得到10到20的总和(人口) 然后继续
我的输入数据看起来像:
population,minimum_age,maximum_age,gender,zipcode,geo_id
50,30,34,f,61747,8600000US61747
5,85,NaN,m,64120,8600000US64120
1389,10,34,m,95117,8600000US95117
231,5,60,f,74074,8600000US74074
306,22,24,f,58042,8600000US58042
我的代码:
import pandas as pd
import numpy as np
df1 = pd.read_csv("C:\Users\Rahul\Desktop\Desktop_Folders\Code\Population\population_by_zip_2010.csv")
df2=df1.set_index("geo_id")
df2['sum_population'] = np.where(df2['minimum_age'] < 10,sum(df2['population']),0)
print df2
答案 0 :(得分:4)
您可以尝试与groupby一起剪切的pandas,
df.groupby(pd.cut(df['minimum_age'], bins=np.arange(0,100, 10), right=False)).population.sum().reset_index(name = 'sum of population')
minimum_age sum of population
0 [0, 10) 231.0
1 [10, 20) 1389.0
2 [20, 30) 306.0
3 [30, 40) 50.0
4 [40, 50) NaN
5 [50, 60) NaN
6 [60, 70) NaN
7 [70, 80) NaN
8 [80, 90) 5.0
说明:Pandas cut通过将它们放在0-10,10-20等组中来帮助创建minimum_age的bin。这就是它的外观
pd.cut(df['minimum_age'], bins=bins, right=False)
0 [30, 40)
1 [80, 90)
2 [10, 20)
3 [0, 10)
4 [20, 30)
现在我们在pd.cut的输出上使用groupby来查找总体的总和。