zoukankan      html  css  js  c++  java
  • 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    温差大
    
    
  • 相关阅读:
    C语言-if语句
    C语言-表达式
    C语言-基础
    Java for LeetCode 187 Repeated DNA Sequences
    Java for LeetCode 179 Largest Number
    Java for LeetCode 174 Dungeon Game
    Java for LeetCode 173 Binary Search Tree Iterator
    Java for LeetCode 172 Factorial Trailing Zeroes
    Java for LeetCode 171 Excel Sheet Column Number
    Java for LeetCode 169 Majority Element
  • 原文地址:https://www.cnblogs.com/jevious/p/13375774.html
Copyright © 2011-2022 走看看