Hap*_*yPy 15 python merge pandas
df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用来自的键合并两个数据帧df1.我想我应该用pd.merge它,但我怎么能告诉pandas将值放在b列df2的a列中df1.这是我想要实现的输出:
a x y
0 1 4 7
1 2 5 8
2 3 6 9
3 10 13 16
4 11 14 17
5 12 15 18
Run Code Online (Sandbox Code Playgroud)
EdC*_*ica 22
In [92]:
pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True)
Out[92]:
a x y
0 1 4 7
1 2 5 8
2 3 6 9
3 10 13 16
4 11 14 17
5 12 15 18
Run Code Online (Sandbox Code Playgroud)
同样你可以使用,merge但你需要重命名列如上:
In [103]:
df1.merge(df2.rename(columns={'b':'a'}),how='outer')
Out[103]:
a x y
0 1 4 7
1 2 5 8
2 3 6 9
3 10 13 16
4 11 14 17
5 12 15 18
Run Code Online (Sandbox Code Playgroud)
使用numpy连接数据帧,因此您不必重命名所有列(或显式忽略索引)。 np.concatenate也适用于任意数量的数据帧。
df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
df.columns = [ 'a', 'x', 'y' ]
df
Run Code Online (Sandbox Code Playgroud)
您可以重命名列,然后使用函数append或concat:
df2.columns = df1.columns
df1.append(df2, ignore_index=True)
# pd.concat([df1, df2], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
您还可以使用vstackfrom连接两个数据帧numpy并将生成的 ndarray 转换为数据帧:
pd.DataFrame(np.vstack([df1, df2]), columns=df1.columns)
Run Code Online (Sandbox Code Playgroud)