我有这个数据帧:
iata airport city state country lat \
0 00M Thigpen Bay Springs MS USA 31.953765
1 00R Livingston Municipal Livingston TX USA 30.685861
2 00V Meadow Lake Colorado Springs CO USA 38.945749
3 01G Perry-Warsaw Perry NY USA 42.741347
4 01J Hilliard Airpark Hilliard FL USA 30.688012
我想知道每个州的机场数量。例如,如果我有以下函数:
^{pr2}$其中state是州的缩写,例如“MA”。我试图按输入变量对dataframe进行分组,比如state('MA'),然后得到每个状态的机场数量。在
当我使用:
df.groupby(state)['airport'].value_counts()
或者
df.groupby(state)['airport'].value_counts()/df['airport'].count()
df.groupby(['state'] == state)['airport'].value_counts()/df['airport'].count()
最后两个是关于一个选定的机场将处于这种状态的条件概率。在
它抛出一个键错误:“MA”,我认为这是由于输入变量没有被识别为列,而是列中的一个值。在
有没有办法得到每个州的机场数量?在
假设每个记录在整个过程中都是一个机场,您只需计算每个州/国家组合的记录:
可以将其重写为显式groupby apply:
或者存储groupby并重用它(这可能更快):
^{pr2}$我会用Pandas的
nunique
来得到每个州的机场数量。代码更易于阅读和记忆。在为了说明我的观点,我对数据集进行了如下修改,使佛罗里达州多了三个虚构的机场:
iata airport city state country lat 0 00M Thigpen Bay Springs MS USA 31.953765 1 00R Livingston Municipal Livingston TX USA 30.685861 2 00V Meadow Lake Springs CO USA 38.945749 3 01G Perry-Warsaw Perry NY USA 42.741347 4 01J Hilliard Airpark Hilliard FL USA 30.688012 5 f234 Weirdviller Chilliard FL USA 30.788012 6 23r2 Johnson Billiard FL USA 30.888012
然后,我们写下:
df.groupby('state').iata.nunique()
要获得以下结果:state CO 1 MS 1 TX 1 FL 3 NY 1 Name: iata, dtype: int64
希望这有帮助。在
相关问题 更多 >
编程相关推荐