Python 检查列并乘以其他不同长度
我有两个不同的数据帧: df1 df 我想将df1 0列与df 0列进行比较,并将第1列的df1与第1列的df相加,得到它们各自的值。我对不同的长度有困难 预期产出: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
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