1. 程式人生 > 其它 >Python3 定義DataFrame,刪除其中某一或多個行列

Python3 定義DataFrame,刪除其中某一或多個行列

技術標籤:pythonpythonvs2015

Python3 定義DataFrame,刪除其中某一或多個行列

win10截圖快捷鍵

鍵盤:Win+Shift+S

貼上:Ctrl+V

建立一個DataFrame變數

定義一個空的

import pandas as pd
df = pd.DataFrame()

自定義資料

程式碼:

import pandas as pd
#所有的列都顯示
pd.set_option('display.max_columns', None)
#顯示所有行
pd.set_option('display.max_rows', None)
#定義
df = pd.DataFrame({'A':[1,2,3,4],'B':[1,2,3,4],'C':[1,2,3,4],'D':[1,2,3,4]})
#輸出
print(df)

輸出:

df 自定義輸出結果

讀取excel檔案資料

程式碼:

import pandas as pd
#所有的列都顯示
pd.set_option('display.max_columns', None)
#顯示所有行
pd.set_option('display.max_rows', None)
path="D:\\Users\\ky\\Desktop\\20201201.xlsx"
sheetname = "Line"
#讀取excel用read_excel方法
df = pd.read_excel(path, sheet_name=sheetname)
rows_num =
df.shape[0] columns_num = df.shape[1] #切塊 block1 = df.iloc[9:rows_num,3:columns_num] last_row_num = block1.shape[0] + 8 del block1 column_B = 2 - 1 #不知道為什麼16就是顯示到16,不需要減 column_P = 16 row_nine = 9 - 2 block1 = df.iloc[row_nine:last_row_num,column_B:column_P] print(block1) del df df = block1 print(df)

刪除(方法:drop)

文字說明:

drop(labels, axis=0, inplace=True)

具體引數說明(用到部分說明)

引數名內容具體說明有無預設
labelsstring或者array;刪除的行或列的標籤。無預設
axis0 或 1軸向(0表示行,1表示列)0
inplaceboolean型別是否修改源資料False

刪除列

方法一:用列名

1、df.drop(columns=[‘column_name’],axis=1,inplace=True)
2、df.drop([‘column_name’],1,True)

舉例:

#column_name為待刪列的列名,data本身是不會有變化的!
#df.drop(columns=['column_name'],axis=1)
#需要賦值(賦值給新的不會破壞源資料
#df2=df.drop(columns=['bodyType'],axis=1)
#加了inplace=True	df本身就會有變化了,
df.drop(columns=['A'],axis=1,inplace=True)

結果

刪除A列

方法二:不用列名

舉例:

#迴圈連續刪除幾列,這裡6不用變(6刪除的是第7列)
#range(1,2+1)	迴圈的是1到8
for column_no in range(1,2+1):
	#print(column_no)
	#print("刪除"+str(column_no)+"之後")
	df.drop(df.columns[[1]],axis=1,inplace=True)
print(df)

結果:

說明:1 刪除的B列,連續刪除兩列
在這裡插入圖片描述

刪除行

方法一:用列名

方法二:不用列名

舉例:

listRowRemove = [1,2]
#listRowRemove存入的是所有需要刪除的行索引組成的list
#定義一個空的list的方法是:listRowRemove=list()
#list型別新增listRowRemove.append(row[0])
for item in listRowRemove:
		#按行迴圈df,row是一行的資料
		#row[0]:行索引
		#row[1]:獲取該行全部欄位
        for row in df.iterrows():
            if row[0] == item:
                df = df.drop(row[0])
print(df)

結果:

在這裡插入圖片描述

刪除列和行組合使用

舉例:

row=1
for column_no in range(1,3):
    print("刪除列:"+str(column_no))
    #labels代表刪除的行或者列的標籤
    df.drop(labels=row,axis=0,inplace=True)
    print(df)
    row=row+1
    print("刪除行:"+str(row))
    #inplace是否對源資料生效
    df.drop(df.columns[[1]],axis=1,inplace=True)
    print(df)

結果:

在這裡插入圖片描述

錯誤提示

index 1 is out of bounds for axis 0 with size 1

解決方案:

可能是迴圈超過了範圍,range裡面超過了也會提示