Python 如何有选择地将值映射到数据帧的列中?
我有两个数据帧(df1,df2),我想根据列替换df1中的值。df2根据df1中定义的列提供不同的值。 对df1和df2的查询如下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 = 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都相同呢?代码会是什么样子?@ArunMenondf1.replace(df2.set_index(“player”))
然后去掉df.rename
部分。