2015-10-02 145 views
2

的功能,我有一個叫做迪爾列包含五個值的數據框:N,S,E,W和C我它們拆分爲單獨dataframes像這樣:創建熊貓dataframes修真

df_N = df[(df['Dir'] == 'N')] 
df_S = df[(df['Dir'] == 'S')] 
df_E = df[(df['Dir'] == 'E')] 
df_W = df[(df['Dir'] == 'W')] 
df_C = df[(df['Dir'] == 'C')] 

但是,我想創建一個函數或列表理解,爲我這樣做,所以如果數據中的值改變,我不必重新編碼它。

我創建了值的列表,像這樣:

CP_Vals = Series.unique(dftc2['iDir']).tolist() 

但沒有在Python很大OFD的經驗,我努力創造一些自動執行此。我在想這樣的事:

for x in CP_Vals: 
    df_x = df[(df['iDir'] == '%s' % x)] 

這可能嗎?提前致謝!

+0

請問您爲什麼需要這樣做?你已經可以使用'df ['Dir']。unique()'獲得唯一的值,那麼你可以不僅僅使用這些值來過濾你的df,而是爲每個值創建新的dfs? – EdChum

+0

我將爲N,S,E,W和C值創建單獨的列以合併到另一個數據集。 – Tom

+0

您仍然可以實現這一點,而不必通過使用唯一值過濾主df來創建新的dfs,只是建議 – EdChum

回答

4

您可以使用字典來存儲您獲得的不同數據框以及相應的關鍵名稱。示例 -

CP_Vals = dftc2['iDir'].unique().tolist() 
df_dict = {'df_{}'.format(x): df[(df['iDir'] == x)] for x in CP_Vals} 

請注意,字典理解只適用於Python 2.7+。此外,在此之後,您可以訪問特定的數據幀,例如df_dict['df_N']等。

+1

將dftc2 ['iDir']重寫爲第一行的可能性更大。unique()。tolist( )'IMO – EdChum

+0

是的,正確的,改變了它,謝謝:-) –

+0

只是在這裏說謝謝你的答案!它運作得非常好! – Tom