pandas 新增數據列(直接賦值、apply,assign、分條件賦值)


 

# pandas新增數據列(直接賦值、apply、assign、分條件賦值)

# pandas在進行數據分析時,經常需要按照一定條件創建新的數據列,然后進行進一步分析
    # 1 直接賦值
    # 2 df.apply方法
    # 3 df.assig方法
    # 4 按條件選擇分組分別賦值

import pandas as pd

# 0 讀取csv數據到dataframe
df = pd.read_csv("beijing_tianqi_2018.csv")
print(df.head())

# 1 直接賦值的方法
# 實例:清理溫度列,變成數字類型

# 替換掉溫度的后綴
df.loc[:,'bWendu'] = df['bWendu'].str.replace("","").astype('int32')
df.loc[:,'yWendu'] = df['yWendu'].str.replace("","").astype('int32')

# 實例:計算溫差
# 注意:df["bWendu"]其實是一個Series,后面的減法返回的是Series
df.loc[:,"wencha"] = df["bWendu"] - df["yWendu"]
print(df.head())

# 2 df.apply方法

# 實例:添加一列溫度類型:
#  1 如果最高溫度大於33度就是高溫
#  2 如果最低溫度低於-10度就是低溫
#  3 否則就是常溫
def get_wendu_type(x):
    if x["bWendu"] > 33:
        return "高溫"
    if x["yWendu"] < -10:
        return "低溫"
    else:
        return "常溫"
# 注意需要設置axis ==1 ,這是series的index是columns
df.loc[:,"wendu_type"] = df.apply(get_wendu_type,axis=1)
# 查看溫度類型的計數(高溫、低溫、常溫各有多少天)
print(df["wendu_type"].value_counts())


# 3 df.assign方法
# 實例:將溫度從攝氏度變成華氏度

# 可以同時添加多個新的列
df.assign(
    yWendu_huashi = lambda x : x['yWendu']*9/5 +32,
    bWendu_huashi = lambda x : x['bWendu']*9/5 +32
)
print(df['yWendu_huashi'])

# 4 按條件選擇分組分別進行賦值
# 按條件選擇數據,然后隨這部分數據賦值新列
# 實例:高溫溫差大於10度,則認為溫差大

# 先創建空列(這是第一種創建新列的方法)
df['wencha_type'] = ""
df.loc[df["bWendu"]-df["yWendu"] > 10,"wencha_type"] = "溫差大"
df.loc[df["bWendu"]-df["yWendu"] <=10,"wencha_type"] = "溫差正常"

df["wencha_type"].value_counts()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM