我想要对已分组的数据框进行处理,将每个组分别创建成不同的数据框。
我使用列表推导式,在pandas数据框中使用列表names_list的值进行切片,然后将结果赋值给同名变量。但是,names_list中的值并不总是出现在我的数据框中,而且哪一个值不在数据框中是完全随机的。如何使此方法生效并仅返回实际出现的变量?
我尝试了以下方法:
我使用列表推导式,在pandas数据框中使用列表names_list的值进行切片,然后将结果赋值给同名变量。但是,names_list中的值并不总是出现在我的数据框中,而且哪一个值不在数据框中是完全随机的。如何使此方法生效并仅返回实际出现的变量?
我尝试了以下方法:
idx = pd.IndexSlice
names_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
a, b, c, d, e, f, g, h = [df.loc[idx[x,:],:] for x in names_list]
当数据框中不存在某个值时,上述代码会返回KeyError错误。
还尝试了以下方法:
def split_df(data):
try:
a = [df.loc[idx[x,:],:] for x in data]
except KeyError:
a = None
return a
names_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
a, b, c, d, e, f, g, h = [x for x in names_list]
name_vars = [a, b, c, d, e, f, g, h]
name_vars_2 = []
for var, val in zip(name_vars,names_list):
var = split_df(val)
if var is None:
continue
else:
name_vars_2.append(var)
这种方法只返回每个值的 None 列表。
我希望得到一个变量列表,每个变量对应数据框的相应切片。
groupby
,并可选地使用dict
。这几乎肯定是XY问题。请解释您潜在的问题,我们可能能够提供帮助。 - jpp