索引与 DataFrames 对象的对齐方式
对 DataFrames 执行操作时,这两种维度(列和索引)上出现的对齐方式的类型相同。
df1 = pd.DataFrame(rng.randint(0, 20, (2, 2)),
columns=list('AB'))
df1
输出为:
| | A | B |
----------------
| 0 | 1 | 11 |
| 1 | 5 | 1 |
另一个示例:
df2 = pd.DataFrame(rng.randint(0, 10, (3, 3)),
columns=list('BAC'))
df2
输出为:
| | B | A | C |
---------------------
| 0 | 4 | 0 | 9 |
| 1 | 5 | 8 | 0 |
| 2 | 9 | 2 | 6 |
亲自试一试
添加 df1 和 df2。 输出的结果和你的预测的一样吗?
提示 (展开以显示)
df1 + df2
| | A | B | C |
---------------------
| 0 | 1.0 | 15.0 | NaN |
| 1 | 13.0 | 6.0 | NaN |
| 2 | NaN | NaN | NaN |
即使 df2 中传递列的顺序与 df1 中的不同,索引也会在生成的列并集中正确排序对齐。
对于 DataFrames 的缺失值,还可使用填充值。 在本例中,让我们用 df1 中所有值的平均值来填充缺失值,平均值通过先堆叠 df1 的行计算得出:
fill = df1.stack().mean()
df1.add(df2, fill_value=fill)
输出为:
| | A | B | C |
---------------------------
| 0 | 1.0 | 15.0 | 13.5 |
| 1 | 13.0 | 6.0 | 4.5 |
| 2 | 6.5 | 13.5 | 10.5 |
此表列出了 Python 运算符及其等效的 Pandas 对象方法:
| Python 运算符 | Pandas 方法 |
|---|---|
| + | add() |
| - | sub(), subtract() |
| * | mul(), multiply() |
| / | truediv()、div()、divide() |
| // | floordiv() |
| % | mod() |
| ** | pow() |