如何在pandas中的循环内创建动态变量名称

时间:2017-07-15 05:42:45

标签: python pandas

我有一个像

这样的数据框
month  dest
1       a
1       bb
2       cc 
2       dd
3       ee
4       bb

我需要创建一个另外4个数据集的集合。我正在循环并希望在循环内分配dataframe dynamicall的名称,比如

i=1
while i<=4:

    dataframe+str(i)=org_dataframe.loc[org_dataframe['month'] == i]
    i=i+1

它给了我,

  

SyntaxError:无法分配给运营商

如何创建动态字符串变量/数据框名称。

2 个答案:

答案 0 :(得分:4)

我认为最好是创建dict个对象 - 请参阅How do I create a variable number of variables?

通过将groupby对象转换为dict,您可以DataFrames使用dict

d = dict(tuple(df.groupby('month')))
print (d)
{1:    month dest
0      1    a
1      1   bb, 2:    month dest
2      2   cc
3      2   dd, 3:    month dest
4      3   ee, 4:    month dest
5      4   bb}

print (d[1])
   month dest
0      1    a
1      1   bb

另一种解决方案:

for i, x in df.groupby('month'):
    globals()['dataframe' + str(i)] = x

print (dataframe1)
   month dest
0      1    a
1      1   bb

答案 1 :(得分:1)

您可以使用数据框列表:

dataframe = []
dataframe.append(None)

group = org_dataframe.groupby('month')

for n,g in group:
    dataframe.append(g)

dataframe[1]

输出:

   month dest
0      1    a
1      1   bb

dataframe[2]

输出:

   month dest
2      2   cc
3      2   dd