Python3 定義DataFrame,刪除其中某一或多個行列
阿新 • • 發佈:2021-01-08
Python3 定義DataFrame,刪除其中某一或多個行列
win10截圖快捷鍵
鍵盤:Win+Shift+S
建立一個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)
輸出:
讀取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)
具體引數說明(用到部分說明)
引數名 | 內容 | 具體說明 | 有無預設 |
---|---|---|---|
labels | string或者array; | 刪除的行或列的標籤。 | 無預設 |
axis | 0 或 1 | 軸向(0表示行,1表示列) | 0 |
inplace | boolean型別 | 是否修改源資料 | 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)
結果
方法二:不用列名
舉例:
#迴圈連續刪除幾列,這裡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裡面超過了也會提示