数据帧中的按列计算

时间:2019-10-06 07:52:04

标签: python-3.x pandas loops dataframe

我将python 3与Pandas一起使用。 我有两个数据帧,并且基于两个列的值,我想执行乘法...

第一个数据帧结构...

index check_column1 check_column2 value

第二个DF结构

index check_column1 check_column2 value_to_multiply

这个主意是...

1. check_column1 and check_column2 columns are presented in both DF.
2. Need to update data frame 1 with new column (say 'calculated value')
3. this new column value will be calculated using below logic...
   a. for every row in df 1, find the matching row in df2 based on check_column1 and check_column2 values
   b. if match found, then update df1 with logic like df1['calculated value'] = df1['value'] * df2['value_to_multiply']

我可以通过逐行迭代来实现...

for index, row in inputDf.iterrows():
matchFound= df2.query('check_column1 =="{0}" and check_column2 == "{1}"'.format(row['check_column1']
                                                                                ,row['check_column2']))
               if(len(matchFound.index) > 0):
                   newValue= float(row['value']) * matchFound['value_to_multiply']



               df1.at[index,'calculated Value'] = newValue

此逻辑工作正常,但速度很慢。

我有另一个想法,如果我们可以进行列式乘法,如下所示...

df1['calculated value']=df1['value']*df1['value_to_multiply']

这将更快。但是问题是我需要基于check_columns合并两个df,然后我才能执行计算,这又会变慢。我说的是df1中的5M-6M行和df2中的4K行。

还有其他方法可以实现相同目的吗?还是可以用列而不是行来指定逻辑。

0 个答案:

没有答案