我正在用 python 学习 pandas,但似乎无法完成这个问题。有 6 个人口列,POPESTIMATE2010 到 POPESTIMATE 2016,我需要找到这些年之间人口变化最大的县。 (例如,如果 5 年期间的县人口为 100、120、80、105、100、130,则该期间的最大变化将为 |130-80| = 50。)
到目前为止,我所做的是设法将数据操作成数组和列表,但我不确定哪个更能解决这个问题:
import numpy as np
def answer_seven():
sumlev = census_df.SUMLEV.values == 50
data = census_df[['POPESTIMATE2010', 'POPESTIMATE2011','POPESTIMATE2012','POPESTIMATE2013','POPESTIMATE2014','POPESTIMATE2015', 'CTYNAME']].values[sumlev]
s = pd.Series(data[:, 0], [data[:, 1], data[:, 2], data[:, 3], data[:, 4], data[:, 5], data[:, 6]], dtype=np.int64)
return data
answer_seven()
返回数据时的输出:
array([[54660, 55253, 55175, ..., 55290, 55347, 'Autauga County'],
[183193, 186659, 190396, ..., 199713, 203709, 'Baldwin County'],
[27341, 27226, 27159, ..., 26815, 26489, 'Barbour County'],
...,
[21102, 20912, 20989, ..., 20903, 20822, 'Uinta County'],
[8545, 8469, 8443, ..., 8316, 8328, 'Washakie County'],
[7181, 7114, 7065, ..., 7185, 7234, 'Weston County']], dtype=object)
当我返回 s 列表时,我得到一个列表:
55253 55175 55038 55290 55347 Autauga County 54660
186659 190396 195126 199713 203709 Baldwin County 183193
27226 27159 26973 26815 26489 Barbour County 27341
22733 22642 22512 22549 22583 Bibb County 22861
57711 57776 57734 57658 57673 Blount County 57373
10629 10606 10628 10829 10696 Bullock County 10887
20673 20408 20261 20276 20154 Butler County 20944
117768 117286 116575 115993 115620 Calhoun County 118437
33993 34075 34153 34052 34123 Chambers County 34098
26080 26023 26084 25995 25859 Cherokee County 25976
43739 43697 43795 43921 43943 Chilton County 43665
13593 13543 13378 13289 13170 Choctaw County 13841
25570 25144 25116 24847 24675 Clarke County 25767
13670 13456 13467 13538 13555 Clay County 13880
14971 14921 15028 15072 15018 Cleburne County 14973
50448 51173 50755 50831 51211 Coffee County 50177
54443 54472 54471 54480 54354 Colbert County 54514
13121 12996 12875 12662 12672 Conecuh County 13208
11348 11195 11059 10807 10724 Coosa County 11758
38060 37818 37830 37888 37835 Covington County 37796
13896 13951 13932 13948 13963 Crenshaw County 13853
80469 80374 80756 81221 82005 Cullman County 80473
50109 50324 49833 49501 49565 Dale County 50358
43178 42777 42021 41662 41131 Dallas County 43803
71387 70942 70869 71012 71130 DeKalb County 71142
80012 80432 80883 81022 81468 Elmore County 79465
38213 38034 37857 37784 37789 Escambia County 38309
104236 104235 103852 103452 103057 Etowah County 104442
17062 16960 16857 16842 16759 Fayette County 17231
31729 31648 31507 31592 31696 Franklin County 31734
...
我查看了多个论坛帖子,但找不到真正与此相关的内容。我知道最好的方法是创建一个“最高”列和一个“最低”列,然后找到差异最大的县,但我不知道如何找到一个值的最大值/最小值大批。非常感谢您的帮助!
最佳答案
我认为这应该可以解决您的问题
temp = census_df[census_df['SUMLEV'] == 50].set_index('CTYNAME')
yrs = ['POPESTIMATE2010','POPESTIMATE2011','POPESTIMATE2012','POPESTIMATE2013', 'POPESTIMATE2014', 'POPESTIMATE2015']
res = temp.loc[:,yrs].max(axis=1) - temp.loc[:,yrs].min(axis=1)
res.idxmax()
关于python - 寻找多个县之间最大的人口差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878666/