簡體   English   中英

循環遍歷兩個數據框並在循環中按列繪制

[英]loop through two dataframes and plot by column in loop

我有 2 個具有相同列名、索引和大小的數據框。 我想創建一個數據框列與另一個具有相同標題的散點圖。 當我嘗試下面的代碼時,只有 sim.columns 循環,而 obs.columns 只繪制第一列並且不循環。 所以我得到的是每個 sim.columns 僅針對第一個 obs.column 的散點圖。 我不確定這個循環有什么問題。 謝謝你的幫助!

    obs= pd.read_csv(obsFile)
    obs.rename(columns={obs.columns[0]: "SP" }, inplace = True)
    sim= pd.read_csv(simFile)
    sim.rename(columns={sim.columns[0]: "SP" }, inplace = True)
    
sim = sim.set_index("SP")
obs = obs.set_index("SP")

for colsim in sim.columns:
    for colobs in obs.columns:
        axes = plt.gca()
        axes.set_xlim([1,630])
        plt.scatter(sim.index, sim[colsim])
        plt.scatter(obs.index, obs[colobs])

        plt.xlabel('Stress Period')
        plt.ylabel('groundwater elevation(m)')
        plt.title(str(colsim))
        plt.savefig(os.path.join(outFold, str(colsim)+'.pdf')) 
        plt.close()
        break

而不是雙重 for 循環:

for colsim in sim.columns:
    for colobs in obs.columns:
        ...

只需使用zip

for colsim, colobs in zip(sim.columns, obs.columns):
    ...

不確定您想要做什么,但如果此代碼不起作用,請嘗試刪除break然后它應該可以工作,但是如果沒有刪除中斷就可以正常工作,請保留它。

你不應該在這里使用嵌套循環,它不是你想要實現的。 相反,您希望在一個循環中同時遍歷兩個數據幀。 我可以想到兩種方法來實現這一目標:

  1. 合並數據幀並在一個循環中遍歷合並的數據幀
  2. 引入一個計數器變量,該變量可用作並行遍歷兩個數據幀的索引

暫無
暫無

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

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