通过公共列值将一个数据帧列值分配给另一个

时间:2017-06-18 10:56:38

标签: python pandas dataframe

假设我有两个数据帧,df1,df2如下所示。 的 DF1:

   A  D   E
0  1  0  00
1  2  0  00
2  3  0  00
3  4  0  00
4  5  0  00 
5  6  0  00

和另一个数据框 df2:

   A  D   E
0  1  0  00
1  2  0  900
2  3  0  00
3  4  0  300
4  5  0  900 
5  6  0  00

现在我想通过列A匹配的条件将列df1 ['C']的值分配给df2 ['E']。结果应该是

#include <windows.h>

int main() {

    HMODULE module;
    IMAGE_DOS_HEADER * image_dos_header;
    char * code;

    //
    // Retrieve the module handle, e.g. the address in memory where the dll was loaded
    //
    module = GetModuleHandle(TEXT("kernel32.dll"));

    //
    // IMAGE_DOS_HEADER::e_magic containes the PE-Header magic 0x4d5a
    //
    image_dos_header = (IMAGE_DOS_HEADER *)module;

    //
    // code points to "MZ"
    //
    code = (char *)module;

    return 0;
}

我该怎么做?

注意:我正在寻找像更新df2而不是合并的东西,因为我必须在循环中多次这样做。

2 个答案:

答案 0 :(得分:0)

使用合并功能是可以的。

<xsl:value-of select="key('src', ../@id, document('file2.xml'))" />

答案 1 :(得分:0)

您可以使用pd.merge()

pd.merge(df2[['A','D']],df1[['A']].assign(E=df1.C),on='A',how='left').fillna('00')

Out[269]: 
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00

或者您可以使用df.update()

df2_new = df2.set_index('A')
df2_new.update(df1.assign(E=df1.C).set_index('A'))
df2_new.reset_index()
Out[254]: 
   A  D    E
0  1  0   00
1  2  0  900
2  3  0   00
3  4  0  300
4  5  0  900
5  6  0   00