'''
增加列
'''
import pandas as pd
fpath = './ant-learn-pandas-master/datas/beijing_tianqi/beijing_tianqi_2018.csv'
rating = pd.read_csv(fpath)
rating.loc[:, 'bWendu'] = rating.loc[:, 'bWendu'].str.replace("℃", "").astype("int32")
rating.loc[:, 'yWendu'] = rating.loc[:, 'yWendu'].str.replace("℃", "").astype("int32")
1、直接复制
#直接赋值法
rating['wencha'] = rating.loc[:, 'bWendu'] - rating.loc[:, 'yWendu']
2、apply增加列
#此时的x为传入的每行数据
def helper(x):
if x['bWendu'] > 30:
return "高温"
if x['yWendu'] < -10:
return "低温"
return "常温"
#apply法
rating.loc[:, "wendu_type"] = rating.apply(helper, axis=1)
#查看该列数据分布
print(rating.loc[:, "wendu_type"].value_counts())
3、assign增加多个列
#assign法
#返回一个新的对象
#摄氏度转华氏度
new = rating.assign(
bWendu_huashi = lambda x:x["bWendu"] * 9 / 5 + 32,
yWendu_huashi = lambda x:x["yWendu"] * 9 / 5 + 32
)
4、按条件赋值
#按条件分别赋值
rating.loc[rating.loc[:, "bWendu"]-rating.loc[:, "yWendu"] > 8, "wendu_type"] = "温差大"
rating.loc[rating.loc[:, "bWendu"]-rating.loc[:, "yWendu"] <= 8, "wendu_type"] = "温差小"
print(rating)