新增数据列
1.直接赋值
2.df.apply方法
3.df.assgin方法
4.按条件选择分组分别赋值
例子续接上回
# df['High']、df['Low']其实是两个Series,相减返回仍是Series # 此处'High-Low'是要新增的新列名,新列数据为df表每行的High列和Low列的高低差 df.loc[:, 'High-Low'] = df['High'] - df['Low']df.apply方法
下面示例:
新增一个’wendu_type’列,表示温度类型:
1.如果High大于33则为高温
2.Low小于10则为低温
3.否则为常温
df.apply(func, axis) 返回一个Series对象,axis=0则用df的行索引index作为返回对象的索引,当axis=1则用df的列索引columns作为返回对象的索引。
对axis参数有疑惑可参考鄙人的另一篇小文章帮助理解:Python - Pandas 经常用到的axis参数怎么理解?千层蛋糕
def get_wendu_type(x): if x['High'] > 33: return '高温' elif x['Low'] < 10: return '低温' else: return '常温' # 此处axis=1,Series的index为colums df.loc[:, 'wendu_type'] = df.apply(get_wendu_type, axis=1) # 查看温度类型的计数,会对该列进行分组统计 df['wendu_type'].value_counts() # 返回一个Series # 高温 137 # 常温 123 # 低温 66 # Name:wendu_type, dtype: int64df.assign方法
该方法不修改df本身,返回一个新的Dataframe
该方法可以同时新增多列
df.assign( Higher = lambda x: x['High'] + 1 Lower = lambda x: x['Low'] - 1 )按条件选择分组分别赋值
# 直接赋值新增列,给个默认值,会广播到所有行 df['new'] = '' # 可以是任意默认值 1、''、'x'等 df.loc[df['High'] - df['Low'] > 10, 'new'] = '差别大' df.loc[df['High'] - df['Low'] <= 10, 'new'] = '差别小' df['new'].value_counts() # 返回 # 差别大 130 # 差别小 100 # Name:new, dtype:int64
*此文仅为个人笔记



