pandas(三)DataFrame修改

如何改变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
    
    
发布了192 篇原创文章 · 获赞 34 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/a6864657/article/details/103649083