跳至主要内容

Pandas 添加列教程

您不必只局限于给定的数据。您可以向 DataFrame 添加新列。
· 4分钟 阅读

使用 AI 探索

您不必只局限于给定的数据。您可以向 DataFrame 添加新列。这通常被称为变换、变异或特征工程。

您可以从零创建新列,也常常从其他列派生新列,例如将列相加或更改其单位。

派生新列

使用一份狗的数据集,假设您希望在 DataFrame 中新增一列,将每只狗的身高从厘米换算为米。

等号左侧使用方括号指定要创建的新列名,此处为 height_m。右侧则是计算公式。

dogs["height_m"] = dogs["height_cm"] / 100
print(dogs)
        name        breed   color   height_cm   weight_kg   date_of_birth   height_m
0      Bella     Labrador   Brown          56          24      2013-07-01       0.56
1    Charlie       Poodle   Black          43          24      2016-09-16       0.43
2       Lucy    Chow Chow   Brown          46          24      2014-08-25       0.46
3     Cooper    Schnauzer    Gray          49          17      2016-09-16       0.49
4        Max     Labrador   Black          59          29      2016-09-16       0.59
5     Stella    Chihuahua     Tan          18           2      2016-09-16       0.18
6     Bernie  St. Bernard   White          77          74      2016-09-16       0.77

请注意,原有列与派生列都会出现在您修改后的 DataFrame 中。

添加一列

在这个示例中,您将计算狗的体重指数并将其作为一列添加到 DataFrame 中。BMI 指体质指数,计算方式为体重(千克)除以身高(米)的平方。

dogs["height_m"] = dogs["weight_kg"] / dogs["height_m"] ** 2
print(dogs.head())
        name        breed   color   height_cm   weight_kg   date_of_birth   height_m          bmi
0      Bella     Labrador   Brown          56          24      2013-07-01       0.56    76.530612
1    Charlie       Poodle   Black          43          24      2016-09-16       0.43   129.799892
2       Lucy    Chow Chow   Brown          46          24      2014-08-25       0.46   113.421550
3     Cooper    Schnauzer    Gray          49          17      2016-09-16       0.49    70.803832
4        Max     Labrador   Black          59          29      2016-09-16       0.59    83.309394

同样,新列位于等号左侧,但这一次计算涉及两个列。

通过多步操作添加一列

pandas 的真正威力体现在把您已学到的技能组合起来使用。让我们找出那些又瘦又高的狗的名字。

首先,要定义“瘦”的狗,取 BMI 小于 100 的子集。接着,按身高降序排序,以便最高的“瘦狗”排在顶部。

最后,这次您只保留自己感兴趣的列。

bmi_lt_100 = dogs[dogs["bmi"] < 100]
bmi_lt_100_height = bmi_lt_100.short_values("height_cm", ascending=False)
bmi_lt_100_height[["name", "height_cm", "bmi"]]
        name      height_cm           bmi
4        Max             59     83.309394
0      Bella             56     76.530612
3     Cooper             49     70.803832
5     Stella             18     61.728395

如上所示,Max 是 BMI 低于 100 的狗中最高的一只。

交互式示例

在下面的示例中,您向 DataFrame homelessness 添加一个名为 total 的新列,其值为 individuals 与 family_members 两列之和。然后,再向 homelessness 添加一个名为 p_individuals 的列,表示各州流浪人口中个人所占的比例。最后,打印 homelessness 数据框。

# Add total col as sum of individuals and family_members
homelessness["total"] = homelessness["individuals"] + homelessness["family_members"]

# Add p_individuals col as proportion of individuals
homelessness["p_individuals"] = homelessness["individuals"] / homelessness["total"]

# See the result
print(homelessness)

运行上述代码后,将得到如下结果:

                region                 state  individuals  family_members  state_pop     total  p_individuals
0   East South Central               Alabama       2570.0           864.0    4887681    3434.0          0.748
1              Pacific                Alaska       1434.0           582.0     735139    2016.0          0.711
2             Mountain               Arizona       7259.0          2606.0    7158024    9865.0          0.736
3   West South Central              Arkansas       2280.0           432.0    3009733    2712.0          0.841
4              Pacific            California     109008.0         20964.0   39461588  129972.0          0.8
...
48      South Atlantic         West Virginia       1021.0           222.0    1804291    1243.0          0.821
49  East North Central             Wisconsin       2740.0          2167.0    5807406    4907.0          0.558
50            Mountain               Wyoming        434.0           205.0     577601     639.0          0.679

亲自试一试。

也可以查看 DataCamp 的教程:如何在 Pandas 中删除列。

想进一步了解如何在 pandas 中添加新列,请观看我们课程 Data Manipulation with pandas 中的这段视频。

本文内容摘自 DataCamp 的课程 Data Manipulation with pandas,作者为 Maggie Matsui 与 Richie Cotton。

主题