我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

一个正常的dataframe除了正常的内置数据外,还包括列名columns和索引名index,这两个名称就是本文的主角。本文中,将同时对解析出dataframecolumnsindex,做微小的修改。

苏南大叔:python教程,如何直接获取或设置dataframe的行和列标签? - 直接获取或设置行列标签
python教程,如何直接获取或设置dataframe的行和列标签?(图5-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。测试环境:win10python@3.11.0

获得一个dataframe

dataframe相关文章分析中,已经得出的结论是:对于dataframe类型数据来说,无论是columns还是index都可以称之为labels,然后用axis和函数功能来组合起来区分,到底对应的是columns还是index。参考文章:

获得一个dataframe的方式很多,可以直接定义一个。参考文章:

可以通过对csv文件进行解析,获得一个dataframe对象。参考文章:

也可以远程对鸢尾花数据进行解析,获得鸢尾花专属的dataframe对象。参考文章:

甚至说,dataframe.describe()方法的返回值,也是个dataframe对象。参考文章:

本文就直接定义一个dataframe对象好了,测试代码:

import pandas as pd
df = pd.DataFrame(
    [("虎子", 5, "dog"),("老许", 3, "cat")],
    columns=("name", "age", "label"),
    index=("a1", "a2"),
)
print(df)

构造一个dataframe的时候,可以不设置列名columns,也可以不设置行名(索引名)index。不传的时候,就会使用默认的012345样式。

获得dataframe的列(columns)信息

print( df.columns )

其数据类型是:

<class 'pandas.core.indexes.base.Index'>

也可以直接修改columns信息,比如:

df.columns = ["col1","col2","col3"]
print(df)

苏南大叔:python教程,如何直接获取或设置dataframe的行和列标签? - 设置列
python教程,如何直接获取或设置dataframe的行和列标签?(图5-2)

获得dataframe的行(index)信息

df.index

其数据类型是:

<class 'pandas.core.indexes.base.Index'>

也可以直接修改index信息,比如:

df.index= ["row1","row2"]
print(df)

苏南大叔:python教程,如何直接获取或设置dataframe的行和列标签? - 设置索引值
python教程,如何直接获取或设置dataframe的行和列标签?(图5-3)

rename()直接修改标签

df.rename(
    columns={"name": "姓名", "age": "年龄", "label": "标签", "无关": "瞎写"},
    index={"a1": "第一行", "a2": "第二行"},
    inplace=True,
)
print(df)

输出:

     姓名  年龄   标签
第一行  虎子   5  dog
第二行  老许   3  cat

这里有个inplace=True,就是替换原变量的。不加这个参数的话,就是返回一个新的变量。rename里面,写出的columnsindex就是个转化标准,如果没写或者写多了,都是没有问题的。

苏南大叔:python教程,如何直接获取或设置dataframe的行和列标签? - 直接修改标签rename
python教程,如何直接获取或设置dataframe的行和列标签?(图5-4)

import pandas as pd
df = pd.DataFrame(['虎子', '二赖子', '老白', '老许', '哈基米'],
    index=['p1', 'p2', 'p3', 'p4', 'p5'])
print(df)
'''
      0
p1   虎子
p2  二赖子
p3   老白
p4   老许
p5  哈基米
'''

df.rename(columns={0: 'name'}, inplace=True)
print(df)
'''
   name
p1   虎子
p2  二赖子
p3   老白
p4   老许
p5  哈基米
'''

转换为list再设置标签

打印标签信息的类型的话,会发现其类型是:

<class 'pandas.core.indexes.base.Index'>

和预想的list类型差距较大,无法对其做添加修改等操作。而对标签信息进行设置的话,是可以接受类型和类型两种的。这里就可以用到一个从`到list`类型的转化。
核心代码是:

df.columns.values.tolist()

测试代码:

columns_ = df.columns.values.tolist()
print(type(df.columns))
print(columns_, type(columns_))

columns_[0] = "name2"
# columns_.append("col")
# columns_.insert(1,"col")
df.columns = columns_

print(df)

输出:

<class 'pandas.core.indexes.base.Index'>
['name', 'age', 'label'] <class 'list'>
   name2  age label
a1    虎子    5   dog
a2    老许    3   cat

获得dataframe的数值(values)信息

df.values

其数据类型是:

<class 'numpy.ndarray'>

但是不能直接修改.values,下面的语句会报错:

df.values= ["val1","val2"]

报错信息是:

AttributeError: property 'values' of 'DataFrame' object has no setter

苏南大叔:python教程,如何直接获取或设置dataframe的行和列标签? - 不可以修改values
python教程,如何直接获取或设置dataframe的行和列标签?(图5-5)

结束语

写了很多dataframe的文章了,本文也多多少少算炒剩饭了。更多python文章,请参考苏南大叔的python文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python