Pandas中DataFrame修改index、columns名, Series修改index名

本文介绍了在Pandas中如何修改DataFrame的index和columns名,以及Series的index名。主要方法包括DataFrame的rename函数,详细解析了各个参数含义,并提供了使用示例。
一、 DataFrame常用两个方法:

1、使用DataFrame.index = [newName]DataFrame.columns = [newName]

#定义一个dataframe
dict={
    'name':['张三','李四','王五','赵六'],#一列,key为列标签(列索引)。
    'sex':['男','男','男','女'],
    'age':[18,19,20,21]#不同列的数据类型可以不一样
}
df=pd.DataFrame(dict)#DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
                     #行索引自动生成。
df

#修改列名
df.index=[1,2,3,4]
df.columns=[1,2,3]
df

在这里插入图片描述
参考文章
2、使用DataFrame.rename()
DataFrame.rename(mapper = None,index = None,columns = None,axis = None,copy = True,inplace = False,level = None )
参数介绍:
mapper,index,columns:可以任选其一使用,可以是将index和columns结合使用。index和column直接传入mapper或者字典的形式。
axis:int或str,与mapper配合使用。可以是轴名称(‘index’,‘columns’)或数字(0,1)。默认为’index’。
copy:boolean,默认为True,是否复制基础数据。
inplace:布尔值,默认为False,是否返回新的DataFrame。如果为True,则忽略复制值。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

df1 = DataFrame(np.arange(9).reshape(3, 3), index = ['bj', 'sh', 'gz'], columns=['a', 'b', 'c'])
print(df1)
'''
    a  b  c
bj  0  1  2
sh  3  4  5
gz  6  7  8
'''

# 修改 df1 的 index
print(df1.index) # 可以打印出print的值,同时也可以为其赋值
df1.index = Series(['beijing', 'shanghai', 'guangzhou'])
print(df1)
'''
           a  b  c
beijing    0  1  2
shanghai   3  4  5
guangzhou  6  7  8
'''

# 可以使用map方法进行映射,map的使用方法就和python中的map几乎一样
print(df1.index.map(str.upper)) # Index(['BEIJING', 'SHANGHAI', 'GUANGZHOU'], dtype='object')

print(df1) # 结果 并未改变, 上面只是返回一个 dataframe 而已
'''
           a  b  c
beijing    0  1  2
shanghai   3  4  5
guangzhou  6  7  8
'''

# 如果 需要 改变的话,可以如下: 另外赋值给一个变量
df1.index = df1.index.map(str.upper)
print(df1) # 这样 就 改变了
'''
           a  b  c
BEIJING    0  1  2
SHANGHAI   3  4  5
GUANGZHOU  6  7  8
'''

# 更快捷的 方法 使用 rename,可以分别为 index 和 column 来指定值
# 使用 map 的方式来赋值
df2 = df1.rename(index=str.lower, columns=str.upper) # 这种方法 照样是产生一个新的 dataframe
print(df2)
''' 可以很轻松的 修改 dataframe 的 index 和 columns
           A  B  C
beijing    0  1  2
shanghai   3  4  5
guangzhou  6  7  8
'''

# 同时,rename 还可以传入字典
df3 = df2.rename(index={'beijing':'bj'}, columns = {'A':'aa'}) # 为某个 index 单独修改名称
print(df3) #
'''
           aa  B  C
bj          0  1  2
shanghai    3  4  5
guangzhou   6  7  8
'''

# 自定义map函数
def test_map(x):
    return x+'_ABC'

print(df1.index.map(test_map))
# 输出 Index(['BEIJING_ABC', 'SHANGHAI_ABC', 'GUANGZHOU_ABC'], dtype='object')

print(df1.rename(index=test_map))
'''
               a  b  c
BEIJING_ABC    0  1  2
SHANGHAI_ABC   3  4  5
GUANGZHOU_ABC  6  7  8
'''
二、 series改标签名:series.index[]

在这里插入图片描述

<think>我们被要求回答关于Pandas DataFrame插入数据的方法。根据引用内容,我们可以总结出插入列和插入行的方法。 插入列的方法: 1. 使用`df.insert()`方法:可以指定位置插入列,如引用[3]所示。 2. 直接赋值:例如`df['new_column'] = values`,但这种方法默认将新列添加到最后。 插入行的方法(引用[2]和引用[4]): 1. 使用`loc`或`at`:适合小量单条数据插入。 2. 使用`append()`方法:但注意,在较新版本的Pandas中,`append`已被弃用,推荐使用`pd.concat`。 3. 使用`pd.concat`:适合一次性批量插入多行数据,性能更优。 因此,我们将分别介绍插入列和插入行的方法,并给出示例。 注意:用户的问题是关于插入数据,包括列和行,但引用中分别提供了插入列和插入行的方法,所以我们需要分开说明。</think>### Pandas DataFrame 插入数据的完整方法指南 在 Pandas 中向 DataFrame 插入数据主要分为**插入列**和**插入行**两类操作,以下是详细方法和适用场景: --- #### 一、插入列的方法 1. **`insert()` 方法**(精确定位插入) 在指定位置插入新列,适用于需要控制列顺序的场景: ```python # 在索引0处插入'player'列 player_vals = ['A', 'B', 'C', 'D', 'E'] df.insert(loc=0, column='player', value=player_vals) ``` *参数说明*: - `loc`:插入位置索引(0 表示第一列) - `column`:新列 - `value`:列数据(列表/Series)[^3] 2. **直接赋值法**(末尾追加列) 最简洁的添加列方式,新列默认在最后一列: ```python df['new_column'] = [1, 2, 3, 4] # 添加固定值 df['calculated'] = df['points'] * 2 # 添加计算列 ``` --- #### 二、插入行的方法 1. **`loc[]` 索引器**(单行插入推荐) 通过新索引标签添加单行数据: ```python df.loc[5] = ['F', 20, 8, 7] # 在索引5处添加新行 ``` 2. **`concat()` 方法**(批量插入首选) 合并多个 DataFrame,适合高效插入多行: ```python new_rows = pd.DataFrame([['G', 18, 5, 9], ['H', 22, 6, 8]], columns=df.columns) df = pd.concat([df, new_rows], ignore_index=True) ``` 3. **`append()` 方法**(已弃用,不推荐) 旧版本方法(Pandas 1.4.0+ 已弃用): ```python # 替代方案:使用 concat() df = pd.concat([df, pd.DataFrame([['I', 25, 9, 10]], columns=df.columns)]) ``` --- #### 三、关键选择建议 | 操作类型 | 推荐方法 | 适用场景 | |----------|-------------------|------------------------------| | 插入单列 | `insert()` | 需要控制列位置 | | 插入计算列 | 直接赋值 `df['']` | 基于现有列生成新数据 | | 插入单行 | `loc[]` | 逐行动态添加 | | 批量插行 | `concat()` | 添加多行(性能最优)[^2] | | 避免使用 | `append()` | 已弃用,效率低于 `concat()` | > **最佳实践**: > - 插入列优先用直接赋值,需精确定位时用 `insert()` > - 插入行统一使用 `concat()`(兼容性强且性能高) > - 避免在循环中逐行插入,应批量构建数据后一次性合并 --- ### 完整示例 ```python import pandas as pd # 原始DataFrame df = pd.DataFrame({ 'points': [25, 12, 15], 'assists': [5, 7, 7] }) # 插入列示例 df.insert(1, 'rebounds', [11, 8, 10]) # 在位置1插入新列 df['total'] = df['points'] + df['assists'] # 末尾添加计算列 # 插入行示例 new_data = pd.DataFrame({ 'points': [19, 22], 'rebounds': [6, 9], 'assists': [12, 4], 'total': [31, 26] }) df = pd.concat([df, new_data], ignore_index=True) # 批量添加两行 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值