从不同的数据帧查找数据帧中的行

2024-06-16 10:04:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧dfctr

  • df包含一列位置一个介于1和100之间的值,以及一列每月平均搜索,其中包含一个整数

    position | Average monthly searches
           1 |                      250
           2 |                       10
           3 |                       30
           2 |                       40
           4 |                      100
    
  • ctr包含一列位置一个介于1和100之间的值,以及一列衰减ctr,它是反映每个位置衰减的百分比

    Position | Decay Ctr
           1 |    27.18%
           2 |    18.27%
           3 |    12.66%
           4 |     9.13%
           5 |     6.90%
    

我想做的是,对于df中的每一行,通过正确的衰减ctr查找ctr中的位置和时间平均每月搜索

with open("C:\Environments\ENV\Export npower Report Rebuild KWs.csv",newline='') as csvfile:
    with open("C:\Environments\ENV\ctr_csv.csv", newline='') as ctrfile:
        ctr = pd.read_csv(ctrfile)
        df = pd.read_csv(csvfile)

但我不确定如何提取正确的元素,以便将其放入df中的新列visibility。我尝试使用apply语句,但不确定如何正确引用ctr

df['visibility'] = df.apply(numpy.multiply(df['Average monthly searches'] , ctr[ctr[]]   ), axis = 0 )

Tags: csvcsvfileenvdfaswithnewlineopen
2条回答

您可以合并两个框架,然后创建一个新列

comb_df = df.merge(ctr, left_on = 'Position', right_on = 'Position')
comb_df['visibility'] = comb_df['Avg Monthly searches'] * 
comb_df['Decay']

我不确定你在问什么,但如果我理解正确,你想做什么实际上是合并两个数据帧,然后你可以执行任何你喜欢的操作

第一条路

df1 = pd.merge(df,ctr, on='Position' index=False)
#Then you can multiply both columns however you like
df1['Visibility'] = df1.apply(numpy.multiply(df['Average monthly searches'] , df['Decay Ctr']), axis=1)

第二种方式

  df1 = pd.merge(df,ctr,on='Position',index=False)

    def multiply(x):
       for index, row in df1.iterrows():
       row['Visibility'] = row['Average monthly searches'] * row['Decay Ctr']
       return row['Visibility'] 

df1 =df1.apply(multiply, axis=1)

相关问题 更多 >