将pandas数据框列标签从float转换为整数

时间:2020-05-16 11:54:39

标签: python string pandas dataframe int

我有下面的熊猫 dataframe 'GDP'片段,其中列标签是浮点型的。

3        2013.0        2014.0        2015.0  
4           NaN           NaN           NaN  
5  3.127550e+09           NaN           NaN  
6  1.973134e+10  1.999032e+10  2.029415e+10  
7  9.626143e+10  1.008863e+11  1.039106e+11  
8  1.254247e+10  1.279331e+10  1.312082e+10  

我尝试使用以下方法将这些float标签转换为整数,但未成功:

GDP.columns = GDP.columns.astype(int)

我不断收到错误消息: TypeError:无法将索引转换为dtype

然后我要将其转换为字符串(如下所示):

years = np.arange(2006, 2016).astype(str)
GDP = GDP[np.append(['Country'],years)]

因此,我的整体数据框应如下所示: enter image description here

有人可以帮我吗?

print(GDP.columns)看起来像这样:

Index([       'Country',   'Country Code', 'Indicator Name', 'Indicator Code',
                 1960.0,           1961.0,           1962.0,           1963.0,
                 1964.0,           1965.0,           1966.0,           1967.0,
                 1968.0,           1969.0,           1970.0,           1971.0,
                 1972.0,           1973.0,           1974.0,           1975.0,
                 1976.0,           1977.0,           1978.0,           1979.0,
                 1980.0,           1981.0,           1982.0,           1983.0,
                 1984.0,           1985.0,           1986.0,           1987.0,
                 1988.0,           1989.0,           1990.0,           1991.0,
                 1992.0,           1993.0,           1994.0,           1995.0,
                 1996.0,           1997.0,           1998.0,           1999.0,
                 2000.0,           2001.0,           2002.0,           2003.0,
                 2004.0,           2005.0,           2006.0,           2007.0,
                 2008.0,           2009.0,           2010.0,           2011.0,
                 2012.0,           2013.0,           2014.0,           2015.0],
      dtype='object', name=3)

1 个答案:

答案 0 :(得分:2)

仅转换数字列,这里表示前四列之后的所有列并连接在一起:

GDP.columns = GDP.columns[:4].tolist() + GDP.columns[4:].astype(int).astype(str).tolist()

然后:

years = np.arange(2006, 2016).astype(str)
GDP = GDP[np.append(['Country'],years)]