我有一个像
这样的数据框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:无法分配给运营商
如何创建动态字符串变量/数据框名称。
答案 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