首页 > 解决方案 > 如何根据它们的数量删除数据框中的大量列?

问题描述

我有一个有 60 列的数据框。列的名称是年份,分别命名为 1960.0、1961.0......2010.0。我想删除从 1960 年到 2006 年的列。这是我迄今为止尝试过的:

     a = list(map(str,map(float,range(1960,2006))))
     gdp = gdp.drop(a,axis=1)
     gdp

当我运行代码时,它显示:

KeyError: "['1960.0' '1961.0' '1962.0' '1963.0' '1964.0' '1965.0' '1966.0' '1967.0'\n '1968.0' '1969.0' '1970.0' '1971.0' '1972.0' '1973.0' '1974.0' '1975.0'\n '1976.0' '1977.0' '1978.0' '1979.0' '1980.0' '1981.0' '1982.0' '1983.0'\n '1984.0' '1985.0' '1986.0' '1987.0' '1988.0' '1989.0' '1990.0' '1991.0'\n '1992.0' '1993.0' '1994.0' '1995.0' '1996.0' '1997.0' '1998.0' '1999.0'\n '2000.0' '2001.0' '2002.0' '2003.0' '2004.0' '2005.0'] not found in axis"

我认为 \n 在这里干扰,但我不知道如何使它工作。有什么帮助吗?列的标题是 1960.0、1961.0、....2010.0。但它仍然不起作用。

标签: pandasdataframe

解决方案


我认为你需要删除浮点数,而不是字符串,所以删除转换为字符串:

 a = list(map(float,range(1960,2006)))
 #or
 #a = list(range(1960,2006))

 gdp = gdp.drop(a,axis=1)

或者:

 gdp = gdp[:, ~gdp.columns.isin(a)]

推荐阅读