Python 检查列并乘以其他不同长度

Python 检查列并乘以其他不同长度,python,pandas,Python,Pandas,我有两个不同的数据帧: df1 df 我想将df1 0列与df 0列进行比较,并将第1列的df1与第1列的df相加,得到它们各自的值。我对不同的长度有困难 预期产出: 0 1 2 size 0 JJEL 16.2 11.382219 0.0 27 JJEL 36.2 14.726573 48.0 1 JJEL 37.7 14.977400 0.0 3 JJSP 38.0 14.977400 0.0 33 J

我有两个不同的数据帧:

df1

df

我想将df1 0列与df 0列进行比较,并将第1列的df1与第1列的df相加,得到它们各自的值。我对不同的长度有困难

预期产出:

       0     1        2     size
0   JJEL  16.2  11.382219   0.0
27  JJEL  36.2  14.726573  48.0
1   JJEL  37.7  14.977400   0.0
3   JJSP  38.0  14.977400   0.0
33  JJSP  42.0  14.977400   1.0
试试地图

让我们试试合并


Pandas具有内在的数据对齐,这意味着Pandas将尝试使用对齐的dataframe索引和列标题执行所有操作。如果您有重复索引,那么pandas将创建笛卡尔积,这是本例中所需的结果

给埃克斯梅普

df = df.set_index('0')
df.add(df2.set_index('0')).fillna(df).reset_index()
# or df.add(df1.set_index('0'), fill_value=0).reset_index()
输出:

      0     1          2  size
0  JJEL  16.2  11.382219   0.0
1  JJEL  36.2  14.726573  48.0
2  JJEL  37.7  14.977400   0.0
3  JJSP  38.0  14.977400   0.0
4  JJSP  42.0  14.977400   1.0
您可以将df1映射到df2:

result = df2['1'] + df2['0'].map(df1.set_index('0')['1'])
将结果分配回df2:


整个系统的Nan值column@LucasFrancklin在我这方面效果很好,请查看您的数据帧名称~df.columns~
df = df.merge(df1,on = ['0'])
#Then we have the value in same df 
df['new'] = df['1_x'] + df['1_y']
df = df.set_index('0')
df.add(df2.set_index('0')).fillna(df).reset_index()
# or df.add(df1.set_index('0'), fill_value=0).reset_index()
      0     1          2  size
0  JJEL  16.2  11.382219   0.0
1  JJEL  36.2  14.726573  48.0
2  JJEL  37.7  14.977400   0.0
3  JJSP  38.0  14.977400   0.0
4  JJSP  42.0  14.977400   1.0
result = df2['1'] + df2['0'].map(df1.set_index('0')['1'])
df2.assign(**{'1':result})
 
       0     1          2  size
0   JJEL  16.2  11.382219   0.0
27  JJEL  36.2  14.726573  48.0
1   JJEL  37.7  14.977400   0.0
3   JJSP  38.0  14.977400   0.0
33  JJSP  42.0  14.977400   1.0