将Dataframe与在Python中具有列标题的空Dataframe合并

时间:2017-07-17 11:39:05

标签: python pandas dataframe merge

我想将两个数据帧合并在一起;一个是具有列标题的空数据帧,另一个是大小为18 x 600的数据帧。

我尝试了什么:

userQuestionVector1 = pd.read_csv("embedding1_3.csv")
userQuestionVector2 = pd.read_csv("embedding2_3.csv")
userQuestionVector = pd.concat([userQuestionVector1,userQuestionVector2],axis=1)
new_df = pd.DataFrame(columns=[vector])
df_userQuestionVector = new_df.append(userQuestionVector)
print(df_userQuestionVector)

在这里,vector是一个包含600个字符串的列表。

['word2vec_q1_1', 'word2vec_q1_2', 'word2vec_q1_3', ..., 'word2vec_q1_300', 'word2vec_q2_1', ..., 'word2vec_q2_300']

new_df的尺寸为0 x 600。

userQuestionVector1userQuestionVector2的尺寸为18 x 300。

userQuestionVector的尺寸为18 x 600。

输出df_userQuestionVector的尺寸为18 x 1200,即它将两个数据帧并排合并,后半部分为NaN值。

  value1_1 value1_2 value1_3 ... value1_300 string1 string2 string3 ... string300
0 value2_1 value2_2 value2_3 ... value2_300  NaN     NaN     NaN   ...     NaN
1 value3_1 value3_2 value3_3 ... value3_300  NaN     NaN     NaN   ...     NaN
2 value4_1 value4_2 value4_3 ... value4_300  NaN     NaN     NaN   ...     NaN
.   .       .       .            .       .       .            .
.   .       .       .            .       .       .            .

预期输出的维度应为18 X 600,即df_userQuestionVector应合并在new_df之下。

   string1  string2  string3  ... string300
0  value1_1 value1_2 value1_3 ... value1_300
1  value2_1 value2_2 value2_3 ... value2_300
2  value3_1 value3_2 value3_3 ... value3_300
.   .       .       .            .       .    
.   .       .       .            .       .       

我也尝试过:

frames=[new_df, userQuestionVector]
df_userQuestionVector = pd.concat(frames,axis=0)

但这给了我同样的结果。

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

在阅读csv时,将标题设置为无,而不是创建new_df数据帧,而是将userQuestionVector数据帧列设置为vector,即将代码更改为

userQuestionVector1 = pd.read_csv("embedding1_3.csv", header= None)
userQuestionVector2 = pd.read_csv("embedding2_3.csv", header = None)
userQuestionVector = pd.concat([userQuestionVector1,userQuestionVector2],axis=1)
userQuestionVector.columns = vector

希望这有帮助。