如何在熊猫数据框中使用字符串作为列名

时间:2019-10-09 15:44:39

标签: python pandas

我有一个excel工作簿,可以从中读取数据并进行处理。在excel工作簿中,某些列标题是数字,我不知道如何在熊猫中使用它们。我也不允许在excel中更改列标题(出于该项目的目的)。

在这种情况下,列标题都是相同的(例如:2008、2008和2008),并且都是数字。在我的项目中这是有道理的,但对大熊猫和我来说都很困惑。之所以区分它们,是因为excel工作簿中它们上方的行具有更多信息。

filename = 'myfile.xlsx'
data = pd.read_excel(myfile, skiprows=8)

print("Column Headings")
print(data.columns)

打印列标题(缩短的列表)的结果:

Index([2008, '2008.1', '2008.2'], dtype='object')

现在,我需要使用这些列名称来获取这些列中的数据...

provider_name = 'example_name'
subset_by_provider = data.loc[data['Provider'] == provider_name]

#the error is here. 2008 is the column name
data_2008 = subset_by_provider.2008.tolist() 

如上所述,错误出现在代码的最后一行。我正在将数据读入列表。 2008(作为整数)和“ 2008.1”是我的Excel工作表中的列名称。但是我收到语法错误。

#Doesn't work
data_2008 = subset_by_provider.2008.tolist()

#Doesn't work
data_2008 = subset_by_provider.'2008.1'.tolist()

#Does work
data_2008 = subset_by_provider.i2008.tolist()

在第二行中,我将excel工作表中的列名从2008更改为i2008,以证明这一点。但是,实际上,我是不允许这样做的。

如何读取列名2008或'2008.1'?

1 个答案:

答案 0 :(得分:0)

如以上评论中所述。解决方案:

data_2008 = subset_by_provider[2008].tolist()

or

data_2008 = subset_by_provider['2008.1'].tolist()