• 5.pandas新增数据列


    有的时候,表格自带的数据根本没有办法满足我们,我们经常会新加一列数据或者对原有的数据进行修改

    还是接着上篇文章的数据进行操作

    直接赋值

    我想算一下每一天的温差

    df.loc[:, 'wencha'] = df['wendu_max'] - df['wendu_min']
    
                wendu_min  wendu_max weather  fengji  wencha
    data                                                    
    2020-01-01          1         15       晴       1      14
    2020-01-02          1         16      多云       2      15
    2020-01-03          1         17      小雨       4      16
    2020-01-04          4         18       阴       2      14
    2020-01-05          1         19      大雨       1      18
    2020-01-06          3         20      小雨       3      17
    2020-01-07          1         21       晴       5      20
    2020-01-08          1         22      多云       2      21
    2020-01-09          1         23       阴       1      22
    2020-01-10          0         24      小雨       3      24
    2020-01-11          2         25      多云       4      23
    
    

    这样就多了一列温差的数据

    apply条件添加

    我现在想加一个温度类型列,低于20度的是低温,20-24的是中温,25以上的是高温

    def temperatureType(df):
        if df['wendu_max'] < 20:
            return '低温'
        elif 24 >= df['wendu_max'] >= 20:
            return '中温'
        else:
            return '高温'
    
    
    df.loc[:, 'wendu_t'] = df.apply(temperatureType, axis=1)
    
                wendu_min  wendu_max weather  fengji  wencha wendu_t
    data                                                            
    2020-01-01          1         15       晴       1      14      低温
    2020-01-02          1         16      多云       2      15      低温
    2020-01-03          1         17      小雨       4      16      低温
    2020-01-04          4         18       阴       2      14      低温
    2020-01-05          1         19      大雨       1      18      低温
    2020-01-06          3         20      小雨       3      17      中温
    2020-01-07          1         21       晴       5      20      中温
    2020-01-08          1         22      多云       2      21      中温
    2020-01-09          1         23       阴       1      22      中温
    2020-01-10          0         24      小雨       3      24      中温
    2020-01-11          2         25      多云       4      23      高温
    
    

    这里有几个点需要注意:

    • apply里面是函数名而不是函数名()
    • axis=1是列的匹配,比如是通过最高温度进行筛选,最高温度是其中一列
    • axis=0是索引匹配,如果是想通过日期来新加一列,就应该是axis=0

    assign多列添加

    我想将摄氏度转换成华氏度

    df = df.assign(
        min_huas=lambda x: x['wendu_min'] * 9 / 5 + 32,
        max_huas=lambda x: x['wendu_max'] * 9 / 5 + 32,
    )
    
                wendu_min  wendu_max weather  fengji  min_huas  max_huas
    data                                                                
    2020-01-01          1         15       晴       1      33.8      59.0
    2020-01-02          1         16      多云       2      33.8      60.8
    2020-01-03          1         17      小雨       4      33.8      62.6
    2020-01-04          4         18       阴       2      39.2      64.4
    2020-01-05          1         19      大雨       1      33.8      66.2
    2020-01-06          3         20      小雨       3      37.4      68.0
    2020-01-07          1         21       晴       5      33.8      69.8
    2020-01-08          1         22      多云       2      33.8      71.6
    2020-01-09          1         23       阴       1      33.8      73.4
    2020-01-10          0         24      小雨       3      32.0      75.2
    2020-01-11          2         25      多云       4      35.6      77.0
    
    

    分组添加

    如果高低温差大于15度,我就认为温差大,否则就是温差小

    df.loc[df['wendu_max'] - df['wendu_min'] > 15, 'wencha'] = '温差大'
    df.loc[df['wendu_max'] - df['wendu_min'] <= 15, 'wencha'] = '温差小'
    
                wendu_min  wendu_max weather  fengji wencha
    data                                                   
    2020-01-01          1         15       晴       1    温差小
    2020-01-02          1         16      多云       2    温差小
    2020-01-03          1         17      小雨       4    温差大
    2020-01-04          4         18       阴       2    温差小
    2020-01-05          1         19      大雨       1    温差大
    2020-01-06          3         20      小雨       3    温差大
    2020-01-07          1         21       晴       5    温差大
    2020-01-08          1         22      多云       2    温差大
    2020-01-09          1         23       阴       1    温差大
    2020-01-10          0         24      小雨       3    温差大
    2020-01-11          2         25      多云       4    温差大
    
    
  • 相关阅读:
    IPC之msgutil.c源码解读
    IPC之msg.c源码解读
    IPC之mqueue.c源码解读
    从锅炉工到AI专家(10)
    从锅炉工到AI专家(9)
    从锅炉工到AI专家(8)
    从锅炉工到AI专家(7)
    从锅炉工到AI专家(6)
    从锅炉工到AI专家(5)
    从锅炉工到AI专家(4)
  • 原文地址:https://www.cnblogs.com/jevious/p/13375774.html
Copyright © 2020-2023  润新知