我正在尝试在多个数据框中转换某些数据,这将返回不同的结果。因此,我想将这些结果附加到字典中的不同列表中。
我的方式可行,我想知道是否有更好的方法来实现这一目标?
columns = ["Product_" + str(i) + "_flag" for i in np.arange(1, 6)] +\
["Product_" + str(i) + "_days" for i in np.arange(1, 6)]
## mock dfs
df_1 = pd.DataFrame(np.concatenate((np.random.binomial(1, 0.5, size=(5, 5)),
np.random.random_integers(0, 100, size=(5, 5))), axis=1),
columns=columns)
df_2 = pd.DataFrame(np.concatenate((np.random.binomial(1, 0.5, size=(5, 5)),
np.random.random_integers(0, 100, size=(5, 5))), axis=1),
columns=columns)
# list of dfs (not used)
dfList = [df_1, df_2]
# groupby object
grouped = df_1.groupby(lambda x: re.match("^(.*?)\_\S", x).group(), axis=1)
# dictionary of empty lists
my_list = ['dfList_y', 'dfList_x']
myLists = {key: [] for key in my_list}
# data manipulation
for name, group in grouped:
print('group name:', name)
print(group)
print(group.columns)
myLists['dfList_y'].append(df_1.drop(group.columns, axis=1))
myLists['dfList_x'].append(df_2.drop(group.columns, axis=1))
本质上,我想知道的是下面两行,是否有一些list / dict理解技巧和窍门可以使之更好。
myLists['dfList_y'].append(df_1.drop(group.columns, axis=1))
myLists['dfList_x'].append(df_2.drop(group.columns, axis=1))
编辑:
后续问题:
可以使用groupby名称来命名列表索引吗?因此,可以使用myLists['dfList_y]['group_1']