2015-10-02 60 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