我有2个大小为31789x7和31789x3的数据帧。我想创建一个31789x10数据帧。这原则上与
一起使用BitVec
半秒内的人工数据。但根据我的数据,concat没有在10分钟内完成。如果我“手动”使用:
df3 = pd.concat([df1, df2], axis=1)
它崩溃了:
for c in df2:
df1[c] = df2[c]
这是什么问题? (ignore_index = True无效)
答案 0 :(得分:1)
您可以尝试使用reindex
并仅指定值
df1=df1.reindex(columns=list(df2)+list(df1))
df1[list(df2)]=df2.values
答案 1 :(得分:1)
首先想法是创建默认RangeIndex
:
df3 = pd.concat([df1.reset_index(drop=True),
df2.reset_index(drop=True)], axis=1)
df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)
for c in df2:
df1[c] = df2[c]
相同类型的所有列(例如integer
s),请使用numpy.hstack
:
c = df1.columns.append(df2.columns)
df = pd.DataFrame(np.hstack((df1.values, df2.values)), columns=c)