如果列名以某些字符串Python 3.6结尾,则删除数据框列

时间:2017-09-21 14:10:04

标签: python python-3.x pandas

我有一个包含以下列的数据框:

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

如何从df中删除列名称以Name结尾的列。

1 个答案:

答案 0 :(得分:4)

您可以通过反转(〜)布尔掩码来筛选需要使用locstr.endswith删除的列,同时使用str.contains {{3}}对于string的匹配结束:

$
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')]]