python教程,如何直接获取或设置dataframe的行和列标签?
发布于 作者:苏南大叔 来源:程序如此灵动~一个正常的dataframe
除了正常的内置数据外,还包括列名columns
和索引名index
,这两个名称就是本文的主角。本文中,将同时对解析出dataframe
的columns
和index
,做微小的修改。
大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。测试环境:win10
,python@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)
获得dataframe
的行(index
)信息
df.index
其数据类型是:
<class 'pandas.core.indexes.base.Index'>
也可以直接修改index
信息,比如:
df.index= ["row1","row2"]
print(df)
rename()
直接修改标签
df.rename(
columns={"name": "姓名", "age": "年龄", "label": "标签", "无关": "瞎写"},
index={"a1": "第一行", "a2": "第二行"},
inplace=True,
)
print(df)
输出:
姓名 年龄 标签
第一行 虎子 5 dog
第二行 老许 3 cat
这里有个inplace=True
,就是替换原变量的。不加这个参数的话,就是返回一个新的变量。rename
里面,写出的columns
和index
就是个转化标准,如果没写或者写多了,都是没有问题的。
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
结束语
写了很多dataframe
的文章了,本文也多多少少算炒剩饭了。更多python
文章,请参考苏南大叔的python
文章:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。