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

相關文章
相關標籤/搜索