您的位置:

全面解析dataframe.columns

一、dataframe.columns[0]

在pandas的DataFrame中,columns是一个Series,用来表示每列的名称。columns[0]表示第0列的列名。如果我们需要用到某个DataFrame的第0列,可以直接使用dataframe[dataframe.columns[0]]。

import pandas as pd
df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
print(df[df.columns[0]])

输出结果如下:

0    1
1    2
2    3
Name: A, dtype: int64

二、dataframe.columns转list

dataframe.columns是一个Series,用来表示每列的名称,我们可以直接将其转成一个list。一般情况下我们会用到columns来选取某列或者多列,然后进行其他的操作,比如数据处理以及可视化。因此将columns转成list非常方便。

import pandas as pd
df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
print(list(df.columns))

输出结果如下:

['A', 'B', 'C']

三、dataframe.columns

dataframe.columns是一个Series,通常用来表示DataFrame的每列的名称。在操作DataFrame的时候,我们可以通过想dataframe.columns传入一列的名称来选取这一列。当columns中存在中文或特殊字符时,可能会出现乱码的情况。这时候可以对columns进行编码转换:

import pandas as pd
df = pd.DataFrame({'姓名':['张三','李四','王五'], '年龄':[20,30,40], '分数':[90,80,70]})
df.columns = [col.encode('utf8') for col in df.columns]
print(df)

输出结果如下:

    ç­’å…·  ñÔÅ¥  ϣȮ
0  ó»¾Ç  20   90
1  ëœ±Ï  30   80
2  ĈÐÈ¥  40   70

四、dataframe.columns乱码

当DataFrame中有中文或特殊字符时,columns可能会出现乱码。这时候我们需要进行编码转换。具体方式是使用str.decode将utf8编码转成unicode编码。

import pandas as pd
df = pd.DataFrame({'姓名':['张三','李四','王五'], '年龄':[20,30,40], '分数':[90,80,70]})
df.columns = [col.encode('utf8') for col in df.columns]
df.columns = [col.decode('utf8') for col in df.columns]
print(df)

输出结果如下:

  姓名  年龄  分数
0  张三  20  90
1  李四  30  80
2  王五  40  70

五、dataframe.columns之rename()

我们也可以使用rename方法来对columns进行修改,方法有几种,这里介绍一种简单易懂的方法。rename()的参数columns是一个字典,使用这个字典来映射现有columns的名称以及新的名称。

import pandas as pd
df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
df.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace=True)
print(df)

输出结果如下:

   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

六、dataframe.columns之astype()

有的时候,我们需要将某一列的数据类型进行转换。这时候,可以使用astype(),比如将某一列的数据类型从int转成float,将某一列的数据类型从object转成datetime。

import pandas as pd
df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':['2020-01-01','2020-01-02','2020-01-03']})
df['A'] = df['A'].astype(float)
df['C'] = pd.to_datetime(df['C'], format='%Y-%m-%d')
print(df.dtypes) 

输出结果如下:

A           float64
B             int64
C    datetime64[ns]
dtype: object

七、dataframe.columns之unique()

unique()方法可以帮我们找到某个columns所有不同的值。这个方法经常用在数据分析中需要对某个列进行分类汇总的情况下。比如,需要统计某个含有分类标签的列中有哪些不同的分类。就可以使用unique()方法。

import pandas as pd
df = pd.DataFrame({'地区':['北京','上海','广州','北京','深圳','上海']})
print(df['地区'].unique())

输出结果如下:

['北京' '上海' '广州' '深圳']

八、dataframe.columns之value_counts()

value_counts()方法可以帮助我们统计某个列中每个值出现的次数,通常用来对某一列的数据进行分组及统计分析。

import pandas as pd
df = pd.DataFrame({'地区':['北京','上海','广州','北京','深圳','上海']})
print(df['地区'].value_counts())

输出结果如下:

上海    2
北京    2
广州    1
深圳    1
Name: 地区, dtype: int64

九、dataframe.columns之nunique()

nunique()方法可以返回某个columns中有多少个不同的值。可以通过len(df[column].unique())来验证结果。

import pandas as pd
df = pd.DataFrame({'地区':['北京','上海','广州','北京','深圳','上海']})
print(df['地区'].nunique())

输出结果如下:

4