Pandas 熊猫-匹配2数据帧值

Pandas 熊猫-匹配2数据帧值,pandas,Pandas,我正在尝试与以下2个数据帧进行匹配: df_公司: Cntr No Labour Material Amount BHCU 2604370 0.0 82.5 82.5 BHCU 2604370 24.0 22.0 46.0 df: 代码: 它不应该给我一个匹配,因为df_co‘金额’是82.5,df‘总额’是82.00 但我的结果让我两者都匹配 结果: Cntr No Total

我正在尝试与以下2个数据帧进行匹配:

df_公司:

Cntr No        Labour   Material    Amount  
BHCU 2604370    0.0      82.5       82.5    
BHCU 2604370    24.0     22.0       46.0    
df:

代码:

它不应该给我一个匹配,因为df_co‘金额’是82.5,df‘总额’是82.00

但我的结果让我两者都匹配

结果:

Cntr No        Total     Tally
BHCU 2604370    82.0      Yes
BHCU 2604370    46.0      Yes
怀疑代码比较错误

转换为浮动:

 a = df.iloc[:, :5]
 b = df.iloc[:,5:29].apply(lambda x : 
 x.str.extract('(\d+)',expand=False).astype(float))
 c = df.iloc[:, 29:]
 df = pd.concat([a,b,c], axis=1)
使用:


进一步检查,似乎数字原来是82.50,在转换为浮点型后才更改为82.0。请参阅我的帖子以获取更新的代码。@okl-我认为需要
x.str.extract('(\d+\.\d+)
-从@okl-如果不保密,是否可以共享数据?哦,我的错误,值仍然存在,只有0更改为nan。是否可以将nan更改回0?我尝试了df=df.fillna('0'),但出现错误…AttributeError:(“只能使用带字符串值的.str访问器,它在pandas中使用np.object dtype”,“发生在索引服务INT/EX WASH40英尺处”)可能需要
b=df.iloc[:,5:29]。fillna('0')。astype(str)
Cntr No        Total     Tally
BHCU 2604370    82.0      Yes
BHCU 2604370    46.0      Yes
 a = df.iloc[:, :5]
 b = df.iloc[:,5:29].apply(lambda x : 
 x.str.extract('(\d+)',expand=False).astype(float))
 c = df.iloc[:, 29:]
 df = pd.concat([a,b,c], axis=1)
df = df.merge(df_co.melt('Cntr No', value_name='Total', var_name='Tally'), on=['Cntr No', 'Total'], how='left')
df['Tally'] = df['Tally'].notnull().map({True:'Yes',False:'No'})
print (df)
        Cntr No  Total Tally
0  BHCU 2604370   82.0    No
1  BHCU 2604370   46.0   Yes