【发布时间】:2020-11-23 01:08:41
【问题描述】:
我正在使用纬度/经度/值格式的两个数据框 df1、df2。
print(df1)
0 1 2
0 -85 -175 1.8
1 -80 -170 1.6
..
print(df2)
0 1 2
0 -70 -150 2.5
1 -80 -170 2.0
2 -85 -175 3.0
..
我想乘以df1[2] by df2[2] if df1[0] = df2[0] and df1[1] = [1]。我尝试使用以下内容:
df1['multiplied']=np.where((df1[0]==df2[0],df1[2]*df2[2],np.nan) #if column 1 of df1 equals column 1
#of df2, multiply. Else give NaN
我知道我忽略了此示例中的第二个条件。这里的缺点是,列值的比较是按元素进行的(我的纬度/经度数据未排序)。不同的df大小也会导致错误“只能比较标签相同的系列对象”。
在另一种方法中,我尝试检查df1[0] 和df2[0] 是否相同,并给出一个符合条件的新df:
dfnew=df1.loc[df1[0]==df2[0]]
这导致我出现与上述相同的错误。
我想知道您是否对如何对不同大小的未排序数据框应用条件计算有任何建议?
【问题讨论】:
-
df3=df1.merge(df2, on= [0,1], how='inner')...df3['2_x'].mul(df3['2_y'])
标签: python pandas numpy dataframe conditional-statements