使用字典替换字符串,而不删除熊猫数据框中的字符

时间:2020-01-07 16:33:54

标签: python pandas dictionary replace

我遇到了一种查找问题,尝试使用功能 replace dict zip (请参见下文),但这不能完全产生我想要的结果,因为在此过程中删除了字符(下划线)

问题

  1. 什么是不删除即可生成df3的有效方法 在df1下划线?在我的实际问题中,df1更大,至少(200, 500),而不是下面的示例中的(2,4)。
  2. 要创建df3,为什么不能按如下所示使用替换字典zip , 不删除df1中的下划线?

df1包含唯一的字符串,其下划线以特定模式排列:

import pandas as pd
df1 = pd.DataFrame([['1_1','1_2', '2_1', '2_2'],['1_3','1_4', '2_3', '2_4']])
df1
         0    1    2    3
    0  1_1  1_2  2_1  2_2
    1  1_3  1_4  2_3  2_4

df2包含df1中某些字符串的字典:

df2 = pd.DataFrame([['1_1',234],['1_2',456],['2_3',324],['2_4',765]], columns = ['a', 'b'])
df2

     a    b
0  1_1  234
1  1_2  456
2  2_3  324
3  2_4  765

我想创建df3,其中df1中包含的确切字符串将替换为df2.b中的相应值。但是,当我运行以下代码时,对于df2中不包含的字符串,df3中的下划线2_1、2_2等会消失。

df3 = df1.replace(dict(zip(df2.a, df2.b)))
df3

     0    1    2    3
0  234  456   21   22
1   13   14  324  765

在df3中所需的结果应该是:

     0    1    2    3
0  234  456   2_1   2_2
1   1_3   1_4  324  765

或者,或者:

     0    1    2    3
0  234  456   NaN   NaN
1   NaN   NaN  324  765

0 个答案:

没有答案