Pandas 从已有的数据列中创建新列
- 加载数据
本节使用的数据为 data/air_quality_no2.csv
,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库
- 通过
假设在25°,1013hPa 压力下密度为 1.882
air_quality["london_mg_per_cubic"] = air_quality["station_london"] * 1.882
air_quality.head()
station_antwerp station_paris station_london \
datetime
2019-05-07 02:00:00 NaN NaN 23.0
2019-05-07 03:00:00 50.5 25.0 19.0
2019-05-07 04:00:00 45.0 27.7 19.0
2019-05-07 05:00:00 NaN 50.4 16.0
2019-05-07 06:00:00 NaN 61.9 NaN
london_mg_per_cubic
datetime
2019-05-07 02:00:00 43.286
2019-05-07 03:00:00 35.758
2019-05-07 04:00:00 35.758
2019-05-07 05:00:00 30.112
2019-05-07 06:00:00 NaN
用
[]
就可以创建新列,不需要使用循环,直接相乘,他们之间的乘积是逐元素的。
- 计算
Paris
与Antwerp
的比例;
air_quality["ratio_paris_antwerp"] = (
air_quality["station_paris"] / air_quality["station_antwerp"]
)
air_quality.head()
station_antwerp station_paris station_london \
datetime
2019-05-07 02:00:00 NaN NaN 23.0
2019-05-07 03:00:00 50.5 25.0 19.0
2019-05-07 04:00:00 45.0 27.7 19.0
2019-05-07 05:00:00 NaN 50.4 16.0
2019-05-07 06:00:00 NaN 61.9 NaN
london_mg_per_cubic ratio_paris_antwerp
datetime
2019-05-07 02:00:00 43.286 NaN
2019-05-07 03:00:00 35.758 0.495050
2019-05-07 04:00:00 35.758 0.615556
2019-05-07 05:00:00 30.112 NaN
2019-05-07 06:00:00 NaN NaN
+,-,*,/
和其他的逻辑运算<, >, ==
等等都是逐元素,不需要循环;
如果需要使用更多更广泛的函数,还可以使用apply
- 重命名列名
air_quality_renamed = air_quality.rename(
columns={
"station_antwerp": "BETR801",
"station_paris": "FR04014",
"station_london": "London Westminster",
}
)
air_quality_renamed.head()
BETR801 FR04014 London Westminster \
datetime
2019-05-07 02:00:00 NaN NaN 23.0
2019-05-07 03:00:00 50.5 25.0 19.0
2019-05-07 04:00:00 45.0 27.7 19.0
2019-05-07 05:00:00 NaN 50.4 16.0
2019-05-07 06:00:00 NaN 61.9 NaN
london_mg_per_cubic ratio_paris_antwerp
datetime
2019-05-07 02:00:00 43.286 NaN
2019-05-07 03:00:00 35.758 0.495050
2019-05-07 04:00:00 35.758 0.615556
2019-05-07 05:00:00 30.112 NaN
2019-05-07 06:00:00 NaN NaN
记住
- 创建一个新列,并且赋值给输出,可以使用
[]
- 不需要使用循环,因为他们都是逐元素的。
- 使用
rename
可以修改行标签或列名。
【参考】
How to create new columns derived from existing columns? — pandas 1.5.2 documentation (pydata.org)