如何用从一个数据帧到另一个数据帧的值替换字符串

Posted

技术标签:

【中文标题】如何用从一个数据帧到另一个数据帧的值替换字符串【英文标题】:How to replace string with values from one datafame to another dataframe 【发布时间】:2021-04-27 13:49:04 【问题描述】:

我有两个数据框,在一个数据框(df1)中,每个用户都有字符串值,而在另一个数据框(df2)中,有一个与字符串值关联的值。 我想要一个类似于 df1 的新数据框,但字符串被替换为对应于 df2 的值。让我知道是否存在创建此类新数据框的简单方法? 这是 df1 和 df2 的示例查询

df1 = pd.DataFrame("user": ["user1", "user2", "user3", "user4"], "p1": ["A", "C", "D", "D"],"p2": ["B", "D", "D", "A"],"p3": ["A", "B", "C", "D"],"p4": ["D", "A", "B", "C"], , index=[0, 1, 2, 3], )

df2 = pd.DataFrame("N1": ["A", "B", "C", "D"],"N2": ["1", "2", "5", "6"], , index=[0, 1, 2, 3], )

我想要的输出应该是这样的

【问题讨论】:

【参考方案1】:

您可以将df.stack()Series.mapdf.unstack 一起使用:

In [95]: df3 = df1.set_index('user').stack().map(df2.set_index('N1')['N2']).unstack()

In [96]: df3
Out[96]: 
      p1 p2 p3 p4
user             
user1  1  2  1  6
user2  5  6  2  1
user3  6  6  5  2
user4  6  1  6  5

【讨论】:

谢谢 Mayank,正是我想要的!!

以上是关于如何用从一个数据帧到另一个数据帧的值替换字符串的主要内容,如果未能解决你的问题,请参考以下文章

在将数据从文件插入表时,如何用 NULL 替换 NA 值?

如何用(data.frame)查找表中的值标签替换数据框中的数字代码?

如何用正则表达式替换字符串

如何用同一数据框中其他列的实际列值替换一列中的字符串值?

如何用熊猫数据框中的范围替换列值

数据帧到 RDD[Row] 用空值替换空间