Python 如何有选择地将值映射到数据帧的列中?

Python 如何有选择地将值映射到数据帧的列中?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧(df1,df2),我想根据列替换df1中的值。df2根据df1中定义的列提供不同的值。 对df1和df2的查询如下 df1 = pd.DataFrame({"user": ["user1", "user2", "user3"], "p1": ["A", "C", "C"],"p2": ["

我有两个数据帧(df1,df2),我想根据列替换df1中的值。df2根据df1中定义的列提供不同的值。 对df1和df2的查询如下

  df1 = pd.DataFrame({"user": ["user1", "user2", "user3"], "p1": ["A", "C", "C"],"p2": ["B", "B", "A"],"p3": ["C", "A", "B"],}, index=[0, 1, 2], )
 df2 = pd.DataFrame({"player": ["A", "B", "C"], "p1_score": ["3", "5", "4"],"p2_score": ["2", "4", "3"],"p3_score": ["1", "2", "6"],}, index=[0, 1, 2], )
df1看起来像这样

df2看起来像这样

我想要的新数据帧应该是这样的


修改df2列名称以匹配df1列名称后,您可以使用
df。替换

df1.replace(df2.set_index("player").rename(columns=lambda x: x.split("_")[0]))


修改df2列名称以匹配df1列名称后,可以使用
df.replace

df1.replace(df2.set_index("player").rename(columns=lambda x: x.split("_")[0]))


谢谢@anky,如果df1和df2的列名称p1、p2和p3都相同呢?代码会是什么样子?@ArunMenon
df1.replace(df2.set_index(“player”))
去掉
df.rename
部分。谢谢@anky,如果df1和df2的列名p1、p2和p3都相同呢?代码会是什么样子?@ArunMenon
df1.replace(df2.set_index(“player”))
然后去掉
df.rename
部分。