# 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()