为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2022-04-23 17:06:30
我想使用 pandas 读取 Excel 文件。我想将特定单元格分配给某些参数。所以我的 Excel 包含 4 列。第一列包含位置“s”,第二列包含以年为单位的时间“t”,第三列和第四列是在特定时间在特定位置可用的 2 种不同材料。前几行如下所示:s        t          Biomasse       KWSAT1     2025         234234        2323AT1     2025.25      238208        0990AT1     2025.5       20323         2939AT2     2025         8888          2323df = 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 + 1print Ang["Biomasse","AT1",2025.25]这可行,但非常静态,因为如果集合 S 与工作表中的 s 列不匹配,它将无法正常工作。我试过类似的东西:Ang = {}df = pd.read_excel("Inputdaten_Strom.xlsx", sheetname="Angebot_Nachfrage")i = 0for 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但这给了我一个关键错误。谁能帮助我正确有效地读取值?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

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


查看完整回答
反对 回复 2022-04-23
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

使用 itertuples() 做这件事有什么缺点吗?


For row in df.itertuples():

    Ang["Biomasse", row.s, row.t] = 

    row.Biomasse


查看完整回答
反对 回复 2022-04-23
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信