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
建立新的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)
建立新的Series追加至原有數據幀的尾部,便可實現列的增長。3d
# 建立新系列做爲新追加的列 df['col_4'] = pd.Series(['!', '@', '$', '&'], index=['row_0', 'row_1', 'row_2', 'row_3'])
經過向df.drop()中傳入行索引實現對行的刪除。code
# 刪除最後一行 df = df.drop('row_3')
經過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