pandas 对数据帧DataFrame中数据的增删、补全及转换操做

一、建立数据帧

import pandas as pd

df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['row_0', 'row_1', 'row_2'], columns=['col_0', 'col_1', 'col_2'])

二、增长行、列

  数据帧DataFrame的每一行均可看做是一个对象,每一列都是该对象的不一样属性。每行都具备多维度的属性,所以每行均可以看做是一个小的DataFrame;而每列的数据类型都相同,所以每列均可以看做是一个Series。app

2.1 增长行

  建立新的DataFrame追加至原有数据帧的尾部,便可实现行的增长。经过df.append()实现行的追加。spa

# 建立新的数据帧
df_row3 = pd.DataFrame([[4, 'D', '9%']], index=['row_3'], columns=['col_0', 'col_1', 'col_2'])
# 追加至原有数据帧尾部
df = df.append(df_row3)

2.2 增长列

  建立新的Series追加至原有数据帧的尾部,便可实现列的增长。3d

# 建立新系列做为新追加的列
df['col_4'] = pd.Series(['!', '@', '$', '&'], index=['row_0', 'row_1', 'row_2', 'row_3'])

三、删除行、列

3.1 删除行  

  经过向df.drop()中传入行索引实现对行的删除。code

# 删除最后一行
df = df.drop('row_3')

3.2 删除列

  经过del 或df.pop() 删除索引值对应的列。对象

# del df['col_4'],删除最后一列,与下句代码等价
df.pop('col_4')

  注意:df.pop()实现了对df的删除操做,其返回值是被删除的列,而不是新的df。blog

四、数据补全

  能够看出,row_1行,col_2列对应位置的元素为空,在实际计算过程当中,需对空数据进行补全。可经过df.fillna()对df的空数据进行补全,这里以补0为例。索引

# df.fillna(0, inplace=True),就地补0,与下句代码等价
df = df.fillna(0)

五、元素转换

  能够看出,在col_2列中的‘3%’及‘5%’均为有效的数值数据,但其类型均为‘str’,不能直接参与数学运算。需遍历df,找出其在df中的位置,将其替换为float型数据。数学

for i in range(len(df.index)):
    for j in range(len(df.columns)):
        # df中元素各类类型都有,为了方便检测其中是否含有‘%’,将其统一转换为‘str’型
        if '%' in str(df.iat[i, j]):
            df.iat[i, j] = float(df.iat[i, j].replace('%', '')) / 100