将 zip 生成的列表列表解压缩到一个列表中
Unpacking list of lists generated by a zip into one list
我又在操作数据帧了。
在这里,我使用行作为公共参考来连接多个数据框。
然后我想通过 "pairing" 每个 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 中,获取每个列索引的第一个元素,将其输出为包含在列表中的 tuple/sublist,将其转换为数组,然后对其进行整形摆脱会导致
的子列表
return_df=return_df[list_columns]
打破。最后,对索引 0 [0]
的调用允许它将最终列表检索到 np.array(我需要对其进行整形)。
我的问题是:还有比这更丑陋的吗?我喜欢 zip
和类似的功能,但我讨厌没有简单的 mean/trick 来解压生成的 tuples/sublist 以进行重新排序。
(我在编辑时也想到我可以用不同的方式来做 df,所以我也会指出这一点,但我的主要问题仍然是如何做我正在做的更多 elegantly/with 更多 Pythonic 语法。
最后的[0]
是最脏的...
您可以只压缩所有列列表,然后展平列表列表
list_columns = [ col for cols in zip( *dfcolumns_list ) for col in cols ]
我又在操作数据帧了。 在这里,我使用行作为公共参考来连接多个数据框。 然后我想通过 "pairing" 每个 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 中,获取每个列索引的第一个元素,将其输出为包含在列表中的 tuple/sublist,将其转换为数组,然后对其进行整形摆脱会导致
的子列表 return_df=return_df[list_columns]
打破。最后,对索引 0 [0]
的调用允许它将最终列表检索到 np.array(我需要对其进行整形)。
我的问题是:还有比这更丑陋的吗?我喜欢 zip
和类似的功能,但我讨厌没有简单的 mean/trick 来解压生成的 tuples/sublist 以进行重新排序。
(我在编辑时也想到我可以用不同的方式来做 df,所以我也会指出这一点,但我的主要问题仍然是如何做我正在做的更多 elegantly/with 更多 Pythonic 语法。
最后的[0]
是最脏的...
您可以只压缩所有列列表,然后展平列表列表
list_columns = [ col for cols in zip( *dfcolumns_list ) for col in cols ]