索引与 Series 对象的对齐方式

已完成

在我们的第一个示例中,假设将两个不同的数据源组合在一起,以仅查找按区域列出的前 5 个国家/地区和按人口列出的前 5 个国家/地区:

area = pd.Series({'Russia': 17075400, 'Canada':  9984670,
                  'USA': 9826675, 'China': 9598094, 
                  'Brazil': 8514877}, name='area')
population = pd.Series({'China': 1409517397, 'India': 1339180127,
                        'USA': 324459463, 'Indonesia': 322179605, 
                        'Brazil': 207652865}, name='population')

亲自试一试

现在划分它们来计算人口密度。


提示 (展开以显示)
population / area
Brazil        24.387066
Canada              NaN
China        146.853885
India               NaN
Indonesia           NaN
Russia              NaN
USA           33.018235
dtype: float64




生成的数组包含两个输入数组的索引的并集:总共 7 个国家/地区。 数组中所有没有条目的国家/地区都用现在常见的 NaN(表示“非数值”)进行标记,其中没有条目的原因是它们缺少区域数据或人口数据。

索引匹配的工作方式与内置的 Python 算术表达式的工作方式相同,缺少的值用 NaN 填充。 要清楚地了解这一点,可添加两个在其索引方面略有偏差的 Series

series1 = pd.Series([2, 4, 6], index=[0, 1, 2])
series2 = pd.Series([3, 5, 7], index=[1, 2, 3])
series1 + series2

输出为:

0     NaN
1     7.0
2    11.0
3     NaN
dtype: float64

NaN 值并不总是便于使用。 NaN 与其他任何值组合时结果得到 NaN,这可能比较麻烦,尤其是将多个数据源与缺失值组合使用时。 为帮助解决此问题,Pandas 允许指定要用于操作中缺失值的默认值。 例如,调用 series1.add(series2) 等效于调用 series1 + series2,但你可提供填充值:

series1.add(series2, fill_value=0)

输出为:

0     2.0
1     7.0
2    11.0
3     7.0
dtype: float64

好多了!