我正在按标识符列对数据帧进行切片,并使用for循环和globals()创建子集数据帧。最后,我将所有切片的数据帧组合成一个元组。如您所见,元组创建部分是手动的,但是我需要将代码扩展到更大的数据集,并且无法手动执行,因此想将此步骤添加到我的for循环中以使 tup < / strong>,而无需输入“ tup =(TT_a,TT_b,TT_c,TT_d,TT_e)”。我只需要输出,所以请提出实现它的任何建议,不需要使用globals()
#creates dataframe
import pandas as pd
loc = [100,200,300,400,500,600,700,800,900,1000]
identifier = ['a','a','a','a','b','b','c','d','e','f']
d = {'loc':loc,'identifier':identifier}
df = pd.DataFrame(d)
#create sliced dataframe by identifier, 6 unique
for i in df['identifier'].unique():
globals()['TT_%s' % i] = df[df['identifier'] == i].reset_index()[['loc','identifier']]
%谁
TT_a TT_b TT_c TT_d TT_e TT_f d df i identifier loc pd
#Final Output needed
tup = (TT_a,TT_b,TT_c,TT_d,TT_e)
答案 0 :(得分:0)
首先,请不要这样使用globals
...
使用字典:
d={}
for i in df['identifier'].unique():
if len(df.loc[df['identifier'] == i,'identifier']) > 1:
d['TT_%s' % i] = df.loc[df['identifier'] == i, ['loc','identifier']].reset_index()