2017-09-21 24 views
4

我有下面列的數據幀:刪除數據的框架柱,Python的3.6

SectorName', 'Sector', 'ItemName', 'Item', 'Counterpart SectorName', 'Counterpart Sector', 'Stocks and TransactionsName', 'Stocks and Transactions', 'Units', 'Scale', 'Frequency', 'Date', 'Value' 

如何從df刪除列,其中列名和Name結束。

+2

的可能的複製[如何刪除與大熊貓同一個文本結束多列?(https://stackoverflow.com/q/38426168/1278112) –

回答

4

您可以通過反轉濾波器(〜)布爾掩碼其需要與locstr.endswith刪除列,也正在str.contains$字符串的比賽結束:

cols = ['SectorName', 'Name Sector', 'ItemName', 'Item', 'Counterpart SectorName'] 
df = pd.DataFrame([range(5)], columns = cols) 
print (df) 
    SectorName Name Sector ItemName Item Counterpart SectorName 
0   0   1   2  3      4 

print (~df.columns.str.endswith('Name')) 
[False True False True False] 

df1 = df.loc[:, ~df.columns.str.endswith('Name')] 

df1 = df.loc[:, ~df.columns.str.contains('Name$')] 

或先過濾列名稱:

print (df.columns[~df.columns.str.endswith('Name')]) 
Index(['Sector', 'Item'], dtype='object') 

df1 = df[df.columns[~df.columns.str.endswith('Name')]] 

print (df1) 
    Name Sector Item 
0   1  3 
+1

感謝,我去第二之一。 –

+0

我們可以給出多個,就像'代碼'一樣,df1 = df [df.columns ['df.columns.str.endswith('Name','Code')]] –

+0

您需要連鎖條件,如'df1 = df [df.columns [〜(df.columns.str.endswith('Name')| df.columns.str.endswith('Code'))]]' – jezrael