我有一个包含以下列的数据框:
SectorName', 'Sector', 'ItemName', 'Item', 'Counterpart SectorName', 'Counterpart Sector', 'Stocks and TransactionsName', 'Stocks and Transactions', 'Units', 'Scale', 'Frequency', 'Date', 'Value'
如何从df
中删除列名称以Name
结尾的列。
答案 0 :(得分:4)
您可以通过反转(〜)布尔掩码来筛选不需要使用loc
和str.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')]]