pandas dataframe获取列名、添加列名、列索引

1.获取列名

df = pd.DataFrame({'a': [1, 2, 4, np.nan,7, 9], 'b': ['a', 'b', np.nan, np.nan, 'd', 'e'], 'c': [np.nan, 0, 4, np.nan, np.nan, 5], 'd': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})

输出:
     a    b    c   d
0  1.0    a  NaN NaN
1  2.0    b  0.0 NaN
2  4.0  NaN  4.0 NaN
3  NaN  NaN  NaN NaN
4  7.0    d  NaN NaN
5  9.0    e  5.0 NaN

四种获取列名的方式:

print(df.columns) # 输出是一个index类型: Index(['a', 'b', 'c', 'd'], dtype='object'), 可以进行遍历,其每一个元素是string,
print(list(df)) # 输出是一个list: ['a', 'b', 'c', 'd']
print(df.keys) # 输出是: <bound method NDFrame.keys of      a    b    c   d    ,不可以进行遍历
print(df.keys())# 输出是:Index(['a', 'b', 'c', 'd'], dtype='object').,可以进行遍历,其每一个元素是string

2.添加列名

如果一个矩阵,将其变为dataframe格式,没有列名,打印行数、列数以及选取某一列,选取某一列时,直接df[index],注意想获取第三列,index应该等于2,列索引从0开始。

df = pd.DataFrame([[1, 2, 4, np.nan,7, 9], ['a', 'b', np.nan, np.nan, 'd', 'e'],  [np.nan, 0, 4, np.nan, np.nan, 5],  [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]])
print(df)
print(df.columns) # 会显示有多少列
print(df[2]) # 显示第三列,注意:列索引是从0开始
print(df.shape)  #输出是(4,6)4行6列

输出:
     0    1    2   3    4    5
0    1    2  4.0 NaN    7    9
1    a    b  NaN NaN    d    e
2  NaN    0  4.0 NaN  NaN    5
3  NaN  NaN  NaN NaN  NaN  NaN

RangeIndex(start=0, stop=6, step=1)

0    4.0
1    NaN
2    4.0
3    NaN
Name: 2, dtype: float64

想给他们添加列名,使用方法如下:

df.columns=['a','b','c','d','e','f']
print(df)
print(df['a'])

输出:
     0    1    2   3    4    5
0    1    2  4.0 NaN    7    9
1    a    b  NaN NaN    d    e
2  NaN    0  4.0 NaN  NaN    5
3  NaN  NaN  NaN NaN  NaN  NaN

     a    b    c   d    e    f
0    1    2  4.0 NaN    7    9
1    a    b  NaN NaN    d    e
2  NaN    0  4.0 NaN  NaN    5
3  NaN  NaN  NaN NaN  NaN  NaN

0      1
1      a
2    NaN
3    NaN
Name: a, dtype: object

3.列名覆盖

如果一个dataframe已经有列名字,可以进行覆盖。或者是当你不确定是否有列名,那么直接复制吧,反正是可以直接覆盖,按照你想命名的列名称呼这一列即可:

df = pd.DataFrame({'a': [1, 2, 4, np.nan,7, 9], 'b': ['a', 'b', np.nan, np.nan, 'd', 'e'], 'c': [np.nan, 0, 4, np.nan, np.nan, 5], 'd': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})
print(df)
df.columns = ['aa', 'bb', 'cc', 'dd']
print(df)

输出:
     a    b    c   d
0  1.0    a  NaN NaN
1  2.0    b  0.0 NaN
2  4.0  NaN  4.0 NaN
3  NaN  NaN  NaN NaN
4  7.0    d  NaN NaN
5  9.0    e  5.0 NaN
    aa   bb   cc  dd
0  1.0    a  NaN NaN
1  2.0    b  0.0 NaN
2  4.0  NaN  4.0 NaN
3  NaN  NaN  NaN NaN
4  7.0    d  NaN NaN
5  9.0    e  5.0 NaN

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用rename()方法来修改pandas dataframe列名。具体操作如下: 1. 使用rename()方法,将原列名和新列名以字典形式传入。 例如,将列名A改为B: ``` df.rename(columns={'A': 'B'}, inplace=True) ``` 2. 如果要修改多个列名,可以将多个字典放在一个表中,然后传入rename()方法。 例如,将列名A改为B,将列名C改为D: ``` df.rename(columns={'A': 'B', 'C': 'D'}, inplace=True) ``` 3. 如果只想修改部分列名,可以使用索引来选择需要修改的,然后再使用rename()方法。 例如,将第一列名A改为B: ``` df.rename(columns={df.columns[0]: 'B'}, inplace=True) ``` 注意,修改列名时,需要将inplace参数设置为True,才能直接修改原dataframe。如果不设置inplace参数或者将其设置为False,则会返回一个新的dataframe,原dataframe不会被修改。 ### 回答2: 在pandas中,可以用rename方法来修改DataFrame列名。下面我会详细介绍如何使用rename方法。 首先,我们可以创建一个简单的DataFrame列名为A和B。 ```python import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data) print(df) ``` 这将输出以下内容: ``` A B 0 1 4 1 2 5 2 3 6 ``` 现在,我们想将A的名称更改为C。我们可以使用rename方法来实现,方法如下: ```python df = df.rename(columns={'A': 'C'}) print(df) ``` 这将输出以下内容: ``` C B 0 1 4 1 2 5 2 3 6 ``` 我们可以看到,A已经成功地重命名为了C。 另外,我们还可以使用rename方法同时重命名多个。例如,我们想同时将A和B的名称更改为C和D,我们可以这样做: ```python df = df.rename(columns={'A': 'C', 'B': 'D'}) print(df) ``` 这将输出以下内容: ``` C D 0 1 4 1 2 5 2 3 6 ``` 我们可以看到,A和B已经成功地重命名为了C和D。 需要说明的是,rename方法返回一个新的数据集,原始数据集不会改变。如果需要在原始数据集上修改列名,可以通过设置inplace参数为True来实现: ```python df.rename(columns={'A': 'C'}, inplace=True) ``` 此时,将直接在原始数据集上修改列名。 总之,使用rename方法可以简单快捷地修改DataFrame列名。只需要通过一个字典,即可将原始列名和新列名一一对应。 ### 回答3: 在Pandas中修改DataFrame列名非常简单,只需要使用rename()函数就可以完成。该函数可以接受一个字典参数和一个inplace参数。字典参数是原始列名和新列名的键值对,inplace参数指定是否修改原DataFrame还是返回一个新的DataFrame。 例如,我们有以下示例DataFrame: ``` import pandas as pd data = { 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'gender': ['F', 'M', 'M'] } df = pd.DataFrame(data) ``` 现在我们要将列名'name'改为'full_name',将列名'age'改为'years_old',将列名'gender'改为'sex',可以使用以下代码: ``` df.rename(columns={'name': 'full_name', 'age': 'years_old', 'gender': 'sex'}, inplace=True) ``` 结果会是: ``` full_name years_old sex 0 Alice 25 F 1 Bob 30 M 2 Charlie 35 M ``` 注意第二个参数inplace设置为True,表示直接修改原DataFrame,否则该函数返回一个新的DataFrame,而原始DataFrame不会被修改。 除了使用rename()函数,还可以手动修改DataFrame.columns属性,例如: ``` df.columns = ['full_name', 'years_old', 'sex'] ``` 结果相同: ``` full_name years_old sex 0 Alice 25 F 1 Bob 30 M 2 Charlie 35 M ``` 这两种方法是等价的,如果只需修改一两个列名,rename()函数比较方便;如果需要修改多个或所有列名,直接修改columns属性较方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值