我有10个具有相同行数的DataFrame,每个DataFrame都有自己的一组唯一列(不在任何数据帧之间共享)。我想简单地将数据帧串联起来,这样最终的数据帧就包含了所有数据帧中包含的所有列。最终数据帧的第一行将包含第一行的第一行,后面是第二行的第一行,依此类推至第十个数据帧。我尝试过pandas.concat(dataframes,axis = 1),但它最终以某种方式在我的数值数据中创建了NaN值。我通过编写一个非常缓慢和丑陋的方法来解决这个问题,该方法通过索引逐行增加并逐行创建最终数据帧。什么是正确的熊猫方式?
答案 0 :(得分:1)
假设您的所有数据框都在列表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
答案 1 :(得分:1)
搞定了。只需要设置" ignore_index"调用pandas.concat()时为true。
pd.concat(df_list, axis=1, ignore_index=True) # returns dataframes correctly.
请注意,重建索引不会因某种原因而起作用。
答案 2 :(得分:1)
你可以用列表理解来做到这一点:
pd.concat([df.reset_index(drop=True) for df in df_list], axis = 1)