Python 基于条件的值之间的差异
我有两个数据帧,我想根据条件找出dataframe1和dataframe2之间的差异。我的意思是: df.ref_井:Python 基于条件的值之间的差异,python,dataframe,Python,Dataframe,我有两个数据帧,我想根据条件找出dataframe1和dataframe2之间的差异。我的意思是: df.ref_井: zone depth a 34 b 23 c 11 d 35 e -9999 DFU井 zone depth a 17 c 15 d 25 f 11 我想要的是生成带有区域名称的df3,以及df1和df3中相同区域的深度差: df3=井-参考井(相同区域) 我尝试分别遍历dfs并确定相同的区域,如果它们相等,则查找差异:
zone depth
a 34
b 23
c 11
d 35
e -9999
DFU井
zone depth
a 17
c 15
d 25
f 11
我想要的是生成带有区域名称的df3,以及df1和df3中相同区域的深度差:
df3=井-参考井(相同区域)
我尝试分别遍历dfs并确定相同的区域,如果它们相等,则查找差异:
ref_well_zone_count=len(df_ref_well.iloc[:,0])
well_zone_count=len(df_well.iloc[:,0])
delta_depth=[]
for ref_zone in range(ref_well_zone_count):
for well_zone in range(well_zone_count):
if df_ref_well.iloc[ref_zone,0]==df_well.iloc[well_zone,0]:
delta_tvdss.append(df_well.iloc[well_zone, 1] - df_ref_well.iloc[ref_zone, 1])
问题是我无法将结果填充到新列中,我无法插入它们,因此当我尝试将delta_depth添加为列时,它会说:
ValueError: Length of values does not match length of index
但是如果我打印出结果,它的计算结果会非常完美如果没有匹配项,您没有指定要执行的操作。所以我假设没有匹配意味着深度=0 使用“合并”将2个df链接在一起,然后填充那些不匹配的df,默认情况下将为0:
df3 = pd.merge(ref_well,df_well, on=['zone'], how='outer').fillna(0)
计算差额并将其放回原处
df3['diff'] = df3.depth_x - df3.depth_y
df3['diff'] = df3.depth_x - df3.depth_y