[英]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.