使用python中pandas的read_excel为参数赋值

使用python中pandas的read_excel为参数赋值,python,pandas,python-2.7,Python,Pandas,Python 2.7,我想使用pandas读取Excel文件。我想为某些参数指定特定的单元格 因此,我的Excel包含4列。第一列包含位置“s”,第二列包含时间“t”,以年为单位,第三列和第四列是两种不同的材料,在特定时间该特定位置可用。前几行如下所示: STBiomasseKWS AT1 2025 234234 2323 AT1 2025.25 238208 0990 AT1 2025.5 20323 2939 AT2 2025 8888 2323 df=pd.read\u excel(“Inputdaten\u

我想使用pandas读取Excel文件。我想为某些参数指定特定的单元格

因此,我的Excel包含4列。第一列包含位置“s”,第二列包含时间“t”,以年为单位,第三列和第四列是两种不同的材料,在特定时间该特定位置可用。前几行如下所示:

STBiomasseKWS
AT1 2025 234234 2323
AT1 2025.25 238208 0990
AT1 2025.5 20323 2939
AT2 2025 8888 2323
df=pd.read\u excel(“Inputdaten\u Strom.xlsx”,sheetname=“Angebot\u Nachfrage”)
对于m中的m:
如果m==“Biomasse”:
i=0
对于s中的s:
对于t中的t:
Ang[m,s,t]=df[“Biomasse”][i]
i=i+1
如果m==“KWS”:
i=0
对于s中的s:
对于t中的t:
Ang[m,s,t]=df[“KWS”][i]
i=i+1
打印Ang[“生物信息”,“AT1”,2025.25]
这是可行的,但非常静态,因为如果集合S与工作表中的S列不匹配,它将无法正常工作。我试过这样的方法:

Ang={}
df=pd.read\u excel(“Inputdaten\u Strom.xlsx”,sheetname=“Angebot\u Nachfrage”)
i=0
对于m中的m:
如果m==“Biomasse”:
对于df[“s”]中的s:
对于t中的t:
Ang[m,s,t]=df[“Biomasse”][i]
i=i+1

但它给了我一个关键的错误。有谁能帮助我正确有效地读入值吗?

我会使用
pivot
函数并将数据透视框作为字典返回。我们需要从字典中删除具有空值的键,并进行迭代以合并字典

df_pivot = pd.pivot_table(df, columns=['s','t'], index='Biomasse', values='KWS')
lst= [{k: v for k, v in dct.items() if not math.isnan(v)} for dct in df_pivot.to_dict(orient='row')]
Ang = {}
for el in lst:
    Ang.update({("Biomasse", key[0],key[1]):value for key, value in el.items()})
结果

{('Biomasse', 'AT2', 2025.0): 2323.0,
 ('Biomasse', 'AT1', 2025.5): 2939.0,
 ('Biomasse', 'AT1', 2025.0): 2323.0,
 ('Biomasse', 'AT1', 2025.25): 990.0}
感谢您的回答:)使用itertuples()有什么缺点吗


你能展示一下预期的产量吗。什么是
M
S
T
?Ang[“Biomasse”,“AT1”,2025]的预期输出为234234。Ang[“KWS”,“AT1”,2025.25]应为东经0990度。g、 M是一组材料(Biomasse、KWS等),S是一组位置S(AT1、AT2等),T是一组时间段T(20252025.25等)
For row in df.itertuples():
    Ang["Biomasse", row.s, row.t] = 
    row.Biomasse