mil*_*ler 3 python dataframe pandas
我有两个数据框。有df1多种指标,df2有标准指标。如何通过重复和df2的每次匹配中的值来合并它们。df2.indexdf1.get
import pandas as pd
import numpy as np
idx1 = pd.MultiIndex.from_product([['bar', 'baz', 'foo'],['one','two']])
idx2 = ['bar', 'baz']
df1 = pd.DataFrame(np.random.randn(6, 2), index=idx1, columns=['A', 'B'])
df2 = pd.DataFrame(np.random.randn(2, 1), index=idx2, columns=['C'])
Run Code Online (Sandbox Code Playgroud)
如果df1是
A B
bar one 0.690827 -0.627957
two -0.080936 -1.330712
baz one 1.395178 -0.099748
two -0.116789 0.723990
foo one 0.313067 0.853808
two 0.409727 -0.529002
Run Code Online (Sandbox Code Playgroud)
并且df2是
C
bar -0.773924
baz 0.099662
Run Code Online (Sandbox Code Playgroud)
如何获得合并像?
A B C
bar one 0.690827 -0.627957 -0.773924
two -0.080936 -1.330712 -0.773924
baz one 1.395178 -0.099748 0.099662
two -0.116789 0.723990 0.099662
foo one 0.313067 0.853808 NaN
two 0.409727 -0.529002 NaN
Run Code Online (Sandbox Code Playgroud)
您可以为索引指定名称并在合并中使用该名称,而无需重新索引或重置索引,如下所示
df1.index.set_names(["id_1", "id_2"], inplace=True)
df1.merge(df2, left_on="id_1", right_index=True, how="left")
Run Code Online (Sandbox Code Playgroud)
结果
A B C
id_1 id_2
bar one 0.690827 -0.627957 -0.773924
two -0.080936 -1.330712 -0.773924
baz one 1.395178 -0.099748 0.099662
two -0.116789 0.723990 0.099662
foo one 0.313067 0.853808 NaN
two 0.409727 -0.529002 NaN
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |