【pandas】教程:5-从已有数据中创建新列

Pandas 从已有的数据列中创建新列

  • 加载数据

本节使用的数据为 data/air_quality_no2.csv,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库

【pandas】教程:5-从已有数据中创建新列_第1张图片

【pandas】教程:5-从已有数据中创建新列_第2张图片

  • 通过

假设在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  

[] 就可以创建新列,不需要使用循环,直接相乘,他们之间的乘积是逐元素的。

  • 计算 ParisAntwerp 的比例;
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  

记住

  1. 创建一个新列,并且赋值给输出,可以使用 []
  2. 不需要使用循环,因为他们都是逐元素的。
  3. 使用 rename 可以修改行标签或列名。

【参考】

How to create new columns derived from existing columns? — pandas 1.5.2 documentation (pydata.org)

你可能感兴趣的:(pandas,pandas)