Anders Wang


我所认识的每个人都是榜样,都有值得我去尊敬和学习的地方。


将Series转DataFrame并修改列名

在使用pandas操作的时候,pandas的两个主要数据结构Series和DataFrame是我们用的最多的。

Series是一种类似于一维数组的对象,它由一组数据和一组与之相关的数据标签索引组成。DataFrame是一个表格型的数据结构,它既有行索引也有列索引,它可以被看做有Series组成的字典。

一、将Series转换为DataFrame数据结构

而将Series转换为DataFrame也是会经常遇到的,看下常用的几种方式:

  • 直接使用字典方式

    使用字典的方式,创建好对应的列名与字典值就可以了。

import numpy as np  
import pandas as pd

# 将Series转换为DataFrame
data = pd.Series(np.random.randn(10)*500+1000,  
                 index=['A37','A50','R7S','Note5',
                        'G7','R9_Plus','5C','X5_Pro','MX3','M5'])

df = pd.DataFrame({'Product_Name':data.index, 'Price':data.values})  
print(df)

# 输出内容如下:
#   Product_Name        Price
# 0          A37  1000.464248
# 1          A50   657.992057
# 2          R7S   288.075879
# 3        Note5  2094.297636
# 4           G7  1886.582215
# 5      R9_Plus  1843.629256
# 6           5C   931.553668
# 7       X5_Pro   880.684009
# 8          MX3   932.247291
# 9           M5   650.789302
  • 使用reset_index()方法转换
import numpy as np  
import pandas as pd

# 将Series转换为DataFrame
data = pd.Series(np.random.randn(10)*500+1000,  
                 index=['A37','A50','R7S','Note5',
                        'G7','R9_Plus','5C','X5_Pro','MX3','M5'])

# 通过reset_index()转换为DataFrame
df = data.reset_index(name='Price')

print(type(df))  
print(df)  

从如下输出可以发现,经过reset_index()方法转换后输出的df已经由一个Series结构类型转换为DataFrame,并且原来的Series标签索引列转换成了DataFrame下名为index的一列。

注:和之前使用字典方式转换不同的是我们还需要后续额外修改列名。

<class 'pandas.core.frame.DataFrame'>

     index        Price
0      A37   629.039268  
1      A50    49.832131  
2      R7S  1693.139415  
3    Note5   445.894181  
4       G7  1133.240339  
5  R9_Plus   886.009704  
6       5C  1115.016608  
7   X5_Pro   894.055677  
8      MX3  1014.297011  
9       M5   520.398571  

二、修改DataFrame的列名

由于之前我们使用reset_index()方法将Series转换为DataFrame后,但是转换后的列名还需要修改,这里可以通过使用DataFrame.rename(mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None)方法修改。除了修改columns还可以修改index,十分方便。

import numpy as np  
import pandas as pd

# 将Series转换为DataFrame
data = pd.Series(np.random.randn(10)*500+1000,  
                 index=['A37','A50','R7S','Note5',
                        'G7','R9_Plus','5C','X5_Pro','MX3','M5'])

df = data.reset_index(name='Price')  
print(df)

# 输出内容如下:
#          index        Price
# 0          A37  1000.464248
# 1          A50   657.992057
# 2          R7S   288.075879
# 3        Note5  2094.297636
# 4           G7  1886.582215
# 5      R9_Plus  1843.629256
# 6           5C   931.553668
# 7       X5_Pro   880.684009
# 8          MX3   932.247291
# 9           M5   650.789302

df.rename(columns={'index':'Product_Name'}, inplace=True)  
print(df)

# 输出内容如下:
#   Product_Name        Price
# 0          A37  1000.464248
# 1          A50   657.992057
# 2          R7S   288.075879
# 3        Note5  2094.297636
# 4           G7  1886.582215
# 5      R9_Plus  1843.629256
# 6           5C   931.553668
# 7       X5_Pro   880.684009
# 8          MX3   932.247291
# 9           M5   650.789302
最近的文章

数据处理 - 异常值分析及可视化

异常值(Outlier) 是指样本中的个别值,其数值明显偏离所属样本的其余观测值。大多数情况下,异常值是由于数据录入或者数据后台数据运算错误导致。但是要说明的一点,异常值只是代表这个值属于异常而不一定…

Python, 技术博文, 数据分析详细阅读
更早的文章

数据特征分析 - 帕累托分析法

帕累托分析法是基于帕累托法则的一种分析法。 先来说说什么是帕累托法则,其原型是19世纪意大利经济学家帕累托所创的库存理论。帕累托运用大量的统计资料分析当时的一些社会现象,概括出一种关键的少数和次要的多…

Python, 数据分析, 技术博文详细阅读
comments powered by Disqus