2016-11-08 157 views
0

我有一個數據幀進行如下變更以前的數據:熊貓據幀保持數據幀時,根據用戶輸入

Year  Sex Area Count 
2015   W  Dhaka 6 
2015   M  Dhaka 3 
2015   W  Khulna 1 
2015   M  Khulna 8 
2014   M  Dhaka 13 
2014   W  Dhaka 20 
2014   M  Khulna 9 
2014   W  Khulna 6 
2013   W  Dhaka 11 
2013   M  Dhaka 2 
2013   W  Khulna 8 
2013   M  Khulna 5 
2012   M  Dhaka 12 
2012   W  Dhaka 4 
2012   W  Khulna 7 
2012   M  Khulna 1 

我的意圖是根據用戶input.as例如,用戶可以輸入一個城市表現出一些數據從下拉列表中選擇數據框,並根據該城市的數據構建數據框。

這裏的問題是,假設用戶選擇「達卡」第一和數據顯示correctly.After,當用戶輸入「庫爾納」,數據幀只是數據追加庫爾納到早期數據幀的數據。

但我現在只想保留庫爾納數據。

def update(event): 

    chosen_option = var1.get() 

    df=df_global #df_global is the dataframe with main read file 

    grp_city=df 
    #select data according to variables year and city 
    df=df.loc[df['"Year"']<=end] 
    df=df.loc[df['"Year"']>=start] 
    lst1=list(grp_city['Area'].unique()) 
    df=df.loc[df['Area']==chosen_option] 


    agg_df = df.groupby(['"Year"','Sex']).sum() 
    agg_df.reset_index(inplace=True) 

    piv_df = agg_df.pivot(index='"Year"', columns='Sex', values='Count') 
    fig = plt.figure(1) 
    ax1 = fig.add_subplot(211) 

    piv_df.plot.bar(stacked=True,ax=ax1) 

    canvas = FigureCanvasTkAgg(fig, master=root) 
    plot_widget = canvas.get_tk_widget() 

    plot_widget.grid(row=0, column=0) 

圖看起來像這樣經過多次輸入 enter image description here

有什麼辦法來清除整個數據幀每次?

+1

你已經忽略了包含任何代碼,它聽起來像你想要的只是過濾DF,所以你怎麼做到這一點? – EdChum

+0

添加了我用過的更新方法。請看看它。 –

+1

這可能不是每次讀取數據的最有效方式。但是,既然你正在這樣做,那麼解決方案就是在再次讀取csv數據之前放置'df = None'。 – ImportanceOfBeingErnest

回答

0

() 數據幀問題也解決了通過讀取該全局數據幀每次CSV和過濾器通過替換無花果= plt.figure(1)與無花果= plt.figure問題解決了。