如何根据与pandas匹配的列值将数据从一个数据框移动到另一个数据框?

时间:2015-11-06 21:04:18

标签: python pandas dataframe

我有两个包含不同排序数据的pandas DataFrame,我正在尝试根据内容将数据从一个移动到另一个。我已经尝试了一个lambda函数,但我不认为我理解这是如何工作的。以下是我的数据的简化版本:

df1 = 
   Name  Pos  Opponent  DPAvPos
1  Dave  QB   DEN       NaN
2  Bill  QB   GB        NaN
3  Sean  QB   DET       NaN

df2 =
   Name  DKP/Game
1  DET   20.1
2  DEN   10.4
3  GB    15.2

我想通过将来自df1的Opponent列的数据与df2的Name列匹配,将数据从df2的DKP / Game列移动到DPAvPos列df1。到目前为止,我所尝试的一切都没有奏效。

1 个答案:

答案 0 :(得分:0)

您可以尝试合并这两个数据帧,然后删除DPAvPos并将DKP / Game重命名为DPAvPos:

import pandas as pd

df1 = pd.DataFrame({
    "Name" : ["Dave", "Bill", "Sean"],
    "Pos" : ['QB', 'QB', 'QB'],
    "Opponent" : ["DEN", "GB", "DET"],
    "DPAvPos": ["NaN", "NaN", "NaN"]
})

df2 = pd.DataFrame({
    "Name" : ["DET", "DEN", "GB"],
    "DKP/Game" : [ 20.1, 23, 21]
})

df2.rename(columns={"Name" : "Opponent"}, inplace=True)
df3 = pd.merge(df1, df2, on="Opponent")
df3.drop('DPAvPos', axis=1, inplace=True)
df3.rename(columns={"DKP/Game" : "DPAvPos"}, inplace=True)