赞
踩
直接赋值、apply、assign、分条件赋值
df.loc[:, 'bWendu'] = df['bWendu'].str.replace('℃', '').astype('int32')
df.loc[:, 'yWendu'] = df['yWendu'].str.replace('℃', '').astype('int32')
bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
ymd
2018-01-01 3 -6 晴~多云 东北风 1-2级 59 良 2
2018-01-02 2 -5 阴~多云 东北风 1-2级 49 优 1
2018-01-03 2 -5 多云 北风 1-2级 28 优 1
2018-01-04 0 -8 阴 东北风 1-2级 28 优 1
2018-01-05 3 -6 多云~晴 西北风 1-2级 50 优 1
# 计算一天最高气温与最低气温的差 并在后面赋值一列
df.loc[:, 'wencha'] = df['bWendu'] - df['yWendu']
bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel wencha
ymd
2018-01-01 3 -6 晴~多云 东北风 1-2级 59 良 2 9
2018-01-02 2 -5 阴~多云 东北风 1-2级 49 优 1 7
2018-01-03 2 -5 多云 北风 1-2级 28 优 1 7
2018-01-04 0 -8 阴 东北风 1-2级 28 优 1 8
2018-01-05 3 -6 多云~晴 西北风 1-2级 50 优 1 9
新增 如果温度大于33高温,小于-10低温,否则常温
def get_wendu_type(x):
if x['bWendu'] > 33:
return '高温'
if x['yWendu'] < -10:
return '低温'
return '常温'
# 设置 columns axis==1; 设置 index axis==0
df.loc[:, 'wendu_type'] = df.apply(get_wendu_type, axis=1)
获取高低常温的天数 value_counts为分类计数
df['wendu_type'].value_counts()
wendu_type
常温 328
高温 29
低温 8
Name: count, dtype: int64
将温度从摄氏度转位华氏度
df.assign(
bWendu_huashi = lambda x: x['bWendu'] * 9 / 5 + 32,
yWendu_huashi = lambda x: x['yWendu'] * 9 / 5 + 32
)
bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel wencha wendu_type bWendu_huashi yWendu_huashi
ymd
2018-01-01 3 -6 晴~多云 东北风 1-2级 59 良 2 9 常温 37.4 21.2
2018-01-02 2 -5 阴~多云 东北风 1-2级 49 优 1 7 常温 35.6 23.0
... ... ... ... ... ... ... ... ... ... ... ... ...
2018-12-30 -2 -11 晴~多云 东北风 1级 31 优 1 9 低温 28.4 12.2
2018-12-31 -2 -10 多云 东北风 1级 56 良 2 8 常温 28.4 14.0
温差大于10温差大,温差小于10度温差正常
df['wencha_type'] = ''
df.loc[df['bWendu'] - df['yWendu'] > 10, 'wencha_type'] = '温差大'
df.loc[df['bWendu'] - df['yWendu'] <= 10, 'wencha_type'] = '温差正常'
bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel wencha wendu_type wencha_type
ymd
2018-01-01 3 -6 晴~多云 东北风 1-2级 59 良 2 9 常温 温差正常
2018-01-02 2 -5 阴~多云 东北风 1-2级 49 优 1 7 常温 温差正常
2018-01-03 2 -5 多云 北风 1-2级 28 优 1 7 常温 温差正常
2018-01-04 0 -8 阴 东北风 1-2级 28 优 1 8 常温 温差正常
2018-01-05 3 -6 多云~晴 西北风 1-2级 50 优 1 9 常温 温差正常
获取温差大与温差正常的各共天数 value_counts为分类计数
df['wencha_type'].value_counts()
wencha_type
温差正常 187
温差大 178
Name: count, dtype: int64
增加或重排:
重新索引
重新索引
: .reindex()能够改变或重排Series和DataFrame索引
.reindex()
参数 | 说明 |
---|---|
index, columns | 新的行列索引 |
fill_value | 重新索引中,用于填充缺失位置的值 |
method | 填充方法,ffill当前值向前填充,bfill当前值向后填充 |
limit | 最大填充量 |
copy | 默认True,生成新的对象,False时,新旧相等不复制 |
import pandas as pd
dt = {
'城市': ['北京', '上海', '广州', '深圳', '珠海'],
'环比': [100, 140, 173, 157, 137],
'同比': [70, 87, 55, 69, 72],
'定基': [9, 8, 7, 6, 7]
}
df = pd.DataFrame(dt, index=['c1', 'c2', 'c3', 'c4', 'c5'])
print(df)
城市 环比 同比 定基
c1 北京 100 70 9
c2 上海 140 87 8
c3 广州 173 55 7
c4 深圳 157 69 6
c5 珠海 137 72 7
调整行顺序
re_df = df.reindex(index=['c2', 'c1', 'c3', 'c4', 'c5'])
print(re_df)
城市 环比 同比 定基
c2 上海 140 87 8
c1 北京 100 70 9
c3 广州 173 55 7
c4 深圳 157 69 6
c5 珠海 137 72 7
调整列顺序
re_df = df.reindex(columns=['环比', '城市', '同比', '定基'])
环比 城市 同比 定基
c1 100 北京 70 9
c2 140 上海 87 8
c3 173 广州 55 7
c4 157 深圳 69 6
c5 137 珠海 72 7
新增加一列
df.columns.insert(位置, '列名')
new_c = df.columns.insert(6, '新增')
Index(['城市', '环比', '同比', '定基', '新增'], dtype='object')
新增加一列赋值
df.reindex(columns=new_c , fill_value=值)
new_d = df.reindex(columns=new_c, fill_value=200)
print(new_d)
新增 城市 环比 同比 定基
c1 200 北京 100 70 9
c2 200 上海 140 87 8
c3 200 广州 173 55 7
c4 200 深圳 157 69 6
c5 200 珠海 137 72 7
方法 | 说明 |
---|---|
.append | 链接另一个Index对象, 产生新的Index对象 |
.diff(idx) | 计算差集,产生新的Index对象 |
.intersection(idx) | 计算索引交集 |
.union(idx) | 计算索引并集 |
.delete(loc) | 删除loc位置处的元素 |
.insert(loc, e) | 在loc位置添加一个元素e |
删除loc位置处的元素df.columns.delete(index)或者df.columns.delete([index1, index2])
# 删除了同比
nc = df.columns.delete(2)
Index(['城市', '环比', '定基'], dtype='object')
在loc位置添加一个元素e
# 在2位置添加一个索引
new_c = df.columns.insert(2, '新增')
Index(['城市', '环比', '新增', '同比', '定基'], dtype='object')
输出结果
new_d = df.reindex(columns=new_c, fill_value=200)
城市 环比 新增 同比 定基
c1 北京 100 200 70 9
c2 上海 140 200 87 8
c3 广州 173 200 55 7
c4 深圳 157 200 69 6
c5 珠海 137 200 72 7
删除:
drop
.drop()能够删除Series和DataFrame指定行或列索引
删除行: df.drop(index) df.drop([index, index2])
删除列: df.drop(column) df.drop([column1, column2], axis=1)
print(df.drop(['c1', 'c2']))
城市 环比 同比 定基
c3 广州 173 55 7
c4 深圳 157 69 6
c5 珠海 137 72 7
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。