【发布时间】:2018-06-29 13:51:13
【问题描述】:
以Loc vs. iloc vs. ix vs. at vs. iat?答案中的DataFrame为例。
df = pd.DataFrame(
{'age':[30, 2, 12, 4, 32, 33, 69],
'color':['blue', 'green', 'red', 'white', 'gray', 'black', 'red'],
'food':['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
'height':[165, 70, 120, 80, 180, 172, 150],
'score':[4.6, 8.3, 9.0, 3.3, 1.8, 9.5, 2.2],
'state':['NY', 'TX', 'FL', 'AL', 'AK', 'TX', 'TX']},
index=['Jane', 'Nick', 'Aaron', 'Penelope', 'Dean', 'Christina', 'Cornelia']
)
现在我想要除“食物”和“身高”以外的所有列。
我认为像 df.loc[:,['age':'color', 'score':'state']] 这样的东西会起作用,但 Python 返回 SyntaxError: invalid syntax。
我知道有一种解决方法:df.drop(columns = ['food', 'height'])。但是,在我的现实生活中,我有数百列要删除。输入所有列名效率太低了。
我期待与 R 语言中的 dplyr::select(df, -(food:height)) 或 dplyr::select(df, age:color, score:state) 类似。
【问题讨论】:
-
您能解释一下为什么stackoverflow.com/questions/14940743/… 不适合您吗?它似乎可以解决您的问题。
-
@cᴏʟᴅsᴘᴇᴇᴅ,抱歉,我不知道它对我有什么用。该线程的接受答案给出了
df.drop(columns = ['food', 'height'])之类的答案,就像我在帖子中提到的那样。此外,那里的所有答案似乎都需要显式输入所有列名。但是我在帖子中已经清楚地写道,我想删除的列名太多了,无法输入。