繁体   English   中英

串联高效连接熊猫数据框

[英]Efficiently Concatenate Pandas DataFrames in series

我有10个数据框,它们的行数相等,每个数据框都有自己的唯一列集(在任何数据框之间不共享)。 我想简单地将数据帧串联在一起,以便最终的数据帧包含所有数据帧中包含的所有列。 最终数据帧的第一行将包含第一个数据的第一行,然后是第二个数据的第一行,依此类推,直到第十个数据帧。 我已经尝试过pandas.concat(dataframes,axis = 1),但是最终以某种方式在我的数值数据中创建了NaN值。 我通过编写一个极其缓慢且丑陋的方法来解决此问题,该方法按索引逐行递增,并在最终数据帧中逐行创建。 正确的熊猫方法是什么?

假设所有数据帧都在列表df_list

df0_index = df_list[0].index # get the first data frame's index

for i in range(1, len(df_list)):
    df_list[i] = df_list[i].set_index(df0_index) # reindex all the other dataframes

df_out = pd.concat(df_list, axis=1) # concatenate 

得到它的工作。 只需在调用pandas.concat()时将“ ignore_index”设置为true。

pd.concat(df_list, axis=1, ignore_index=True) # returns dataframes correctly.

请注意,由于某种原因,重新编制索引将无效。

您可以通过列表理解来做到这一点:

pd.concat([df.reset_index(drop=True) for df in df_list], axis = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM