簡體   English   中英

如何在 pandas dataframe 中使用字符串作為列名

[英]How to use string as column name in pandas dataframe

我有一個 excel 工作簿,我正在從中讀取數據並使用它來做事。 在 excel 工作簿中,一些列標題是數字,我不知道如何在 pandas 中使用它們。 我也不允許更改 excel 中的列標題(出於本項目的目的)。

在這種情況下,列標題都是相同的(例如:2008、2008 和 2008)並且都是數字。 這在我的項目環境中是有道理的,但讓 pandas 和我感到困惑。 它們之所以與眾不同,是因為 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()

在第 2 行,我將 excel 表中的列名從 2008 更改為 i2008,只是為了證明一點。 但是,在實踐中,我不允許這樣做。

如何讀取列名 2008 或“2008.1”?

如上面評論中所述。 解決方案:

data_2008 = subset_by_provider[2008].tolist()

or

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM