Python Pandas匹配两个索引和列的值

时间:2017-05-28 08:54:07

标签: python pandas dataframe

我想在两个不同的dfs中的行索引之间进行匹配,如果索引相同,我想转到第二个df,遍历它的列,如果列的值是'V',转到第一个df,并将df的名称添加到列的值。

所以例如:

MAIN DF:

names    col1   col2   col3   total
 bbb      V      V      X      2
 ccc      V      X      X      1

DF2:

names    col1   col2   col3   total
 bbb      V      V      X      2
 zzz      X      X      V      1

所以在 MAIN DF 之后:

names    col1   col2   col3   total   totla_col1   total_col2   total_col3
 bbb      V      V      X      2          DF2          DF2         NULL
 ccc      V      X      X      1          NULL         NULL        NULL

1 个答案:

答案 0 :(得分:1)

您可以先names列创建dict列的索引,cols = ['col1','col2','col3'] DF2 = DF2.set_index('names')[cols].replace({'V':'DF2', 'X':np.nan}).add_prefix('total_') print (DF2) total_col1 total_col2 total_col3 names bbb DF2 DF2 NaN zzz NaN NaN DF2 df = df.join(DF2, on='names') print (df) names col1 col2 col3 total total_col1 total_col2 total_col3 0 bbb V V X 2 DF2 DF2 NaN 1 ccc V X X 1 NaN NaN NaN set_index创建replace值。

然后add_prefix原创:

var snackbarContainer = document.querySelector('#toast');