我再次操作数据框。在这里,我使用行作为公共引用来连接多个数据帧。然后,我想通过将每个df的前一列“配对”在一起来对列进行重新排序,依此类推。一切都是为了数据可读性
这是我的代码:
df_list=[df_1,df_2,df_3]
return_df=pd.concat(df_list,axis=1, join='outer')
dfcolumns_list=[df_1.columns,df_2.columns,df_3.columns]
print (return_df.columns)
print(dfcolumns_list)
list_columns=np.array(list(zip(*dfcolumns_list))).reshape(1,-1)[0]
print (list_columns)
list_columns=np.array([x for x in zip(*dfcolumns_list)]).reshape(1,-1)[0]
print (list_columns)
return_df=return_df[list_columns]
我的问题与:
list_columns=np.array(list(zip(*dfcolumns_list))).reshape(1,-1)[0]
或者
list_columns=np.array([x for x in zip(*dfcolumns_list)]).reshape(1,-1)[0]
它获取索引列表,将其解压缩到zip中,获取每个列索引的第一个元素,将其输出为包含在列表中的元组/子列表,将其转换为数组,然后重塑形状以摆脱子列表,会导致
return_df=return_df[list_columns]
打破。最后,对索引0的调用[0]
使它可以将最终列表检索到np.array中(我需要对其进行重塑)。
我的问题是:没有比这更丑陋的事了吗?我喜欢zip
和喜欢类似的函数,但我讨厌没有简单的方法/技巧来解开生成的元组/子列表以进行重新排序。
(它也来到了我的脑海里,而redacting,我也许可以做DF不同,所以我也给点这一点,但我的主要问题仍然是如何做我在做什么更优雅/有更Python语法,而且[0]
在最终是所有人中最肮脏的...
您可以压缩所有列列表,然后展平列表列表
list_columns = [ col for cols in zip( *dfcolumns_list ) for col in cols ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句