在python中使用read\u excel从pandas为参数赋值

2024-09-27 21:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用熊猫读取一个Excel文件。我想给某些参数指定特定的单元格。你知道吗

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

s        t          Biomasse       KWS
AT1     2025         234234        2323
AT1     2025.25      238208        0990
AT1     2025.5       20323         2939
AT2     2025         8888          2323
df = pd.read_excel("Inputdaten_Strom.xlsx", sheetname="Angebot_Nachfrage")
for m in M:
    if m == "Biomasse":
       i = 0
        for s in S:
            for t in T:
                Ang[m,s,t] = df["Biomasse"][i]
                i = i + 1
    if m == "KWS":
        i = 0
        for s in S:
            for t in T:
                Ang[m,s,t] = df["KWS"][i]
                i = i + 1
print Ang["Biomasse","AT1",2025.25]

这可以工作,但非常静态,因为如果集合S与表中的S列不匹配,它将无法正常工作。我试过这样的方法:

Ang = {}
df = pd.read_excel("Inputdaten_Strom.xlsx", sheetname="Angebot_Nachfrage")
i = 0
for m in M:
    if m == "Biomasse":
        for s in df["s"]:
            for t in T:
                Ang[m,s,t] = df["Biomasse"][i]
                i = i + 1

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


Tags: indfforreadif时间excelpd
2条回答

感谢您的回答:)使用itertuples()有什么缺点吗?你知道吗

For row in df.itertuples():
    Ang["Biomasse", row.s, row.t] = 
    row.Biomasse

我将使用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}

相关问题 更多 >

    热门问题