我想根据列(Q14
)的不同分类值划分 DataFrame,并分别为结果DataFrame命名变量。 data_int.Q14 具有4个唯一值(2、3、4、5)。如何使用for循环为DataFrame创建单独的字符串变量名称?
这是主DataFrame(data_int)的图像
fleet_type = data_int.Q14.unique()
for i in data_int.Q14:
for uni in fleet_type:
if i == uni:
data_'{}'.format{uni} = data_int #I tried to assign the unique values to identify the DataFrames uniquely.
File "<ipython-input-25-2200e7c4c3b7>", line 5
data_'{}'.format{uni} = data_int
^
SyntaxError: invalid syntax
理想情况下,我想针对这种特殊情况使用列表理解功能,如下所示,
[data_int for i in data_int.Q14 if i == 2]
但是我无法定义DataFrame变量的名称。
最终,新的DataFrame应该命名如下,
fleet_data_list = ['fleet_type_{}'.format(i) for i in data_int.Q14.unique()]
fleet_data_list
我找不到使用fleet_data_list
定义变量的方法。知道我该怎么做吗?
答案 0 :(得分:1)
我认为最好通过将groupby对象转换为元组然后转换为dict来创建DataFrames字典:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'Q14':[4,3,2,2,4,5],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
dfs = dict(tuple(df.groupby('Q14')))
print (dfs)
{2: A B C Q14 E F
2 c 4 9 2 6 a
3 d 5 4 2 9 b, 3: A B C Q14 E F
1 b 5 8 3 3 a, 4: A B C Q14 E F
0 a 4 7 4 5 a
4 e 5 2 4 2 b, 5: A B C Q14 E F
5 f 4 3 5 4 b}
并通过键选择:
print (dfs[2])
A B C Q14 E F
2 c 4 9 2 6 a
3 d 5 4 2 9 b
您可能需要什么,但recommended却没有:
for i, g in df.groupby('Q14'):
globals()['fleet_type_{}'.format(i)] = g
print (fleet_type_2 )
A B C Q14 E F
2 c 4 9 2 6 a
3 d 5 4 2 9 b