5.pandas新增資料列
阿新 • • 發佈:2020-07-25
有的時候,表格自帶的資料根本沒有辦法滿足我們,我們經常會新加一列資料或者對原有的資料進行修改
還是接著上篇文章的資料進行操作
直接賦值
我想算一下每一天的溫差
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 溫差大