pandas(三)DataFrame修改
原创
©著作权归作者所有:来自51CTO博客作者风华浪浪的原创作品,请联系作者获取转载授权,否则将追究法律责任
如何改变Series和DataFrame对象?
-
增加或重排:
重新索引
重新索引
: .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