繁体   English   中英

用来自另一个 pandas dataframe 的相应字符串值替换多列中的虚拟值

[英]Replace dummy values in multiple columns with corresponding string values from another pandas dataframe

我有两个 pandas 数据帧,第二个具有我从第一个提取的虚拟值,如下所示:

df1
    Col_0   Col_1   Col_2   Col_3    ...Col_27
0   A       535     C       Mission
1   A       536     C       Mission
2   A       541     C       Fair Oaks
3   A       5455    C       Valley
4   A       55      C       Sunset
5   A       55      C       Green
6   B       West    C       4th
7   B       East    C       Bainbridge
8   C       Pearl   B       West
9   C       Main    B       South
10  C       First   C       Allen

df2 = pd.get_dummies(df1[['Col_0', 'Col_2', 'Col_4', 'Col_6', 'Col_8', 'Col_10', 'Col_12', 'Col_14', 'Col_16', 'Col_18', 'Col_20', 'Col_22','Col_24', 'Col_26']])
df2
    Col_0_A Col_0_B Col_0_C Col_2_B Col_2_C ...Col__26_E
0   1       0       0       0       1
1   1       0       0       0       1
2   1       0       0       0       1
3   1       0       0       0       1
4   1       0       0       0       1
5   1       0       0       0       1
6   0       1       0       0       1
7   0       1       0       0       1
8   0       0       1       1       0
9   0       0       1       1       0
10  0       0       1       0       1


df3
    A     B     C       B      C         ...E
0   535                        Mission
1   536                        Mission
2   541                        Fair Oaks
3   5455                       Valley
4   55                         Sunset
5   55                         Green
6         West                 4th
7         East                 Bainbridge
8               Pearl   West    
9               Main    South   
10              First          Allen

我需要创建另一个 dataframe、df3,其中 df2 中的 1 被 df1 Col_1、Col_3 中的值替换,依此类推。 df2 中的列具有 df1 中相应列的前缀。 Df1 上升到 Col_27,所以想象一下 df2 有 150 列和 25,000 行。 我已经做到了这一点,但不知道如何将 map 这两者结合在一起。 希望这一切都有意义。 谢谢

从一开始就创建列对

df=pd.concat([df1[x].str.get_dummies().mul(df1[y],axis=0)  for x , y in zip(df1.columns[::2],df1.columns[1::2])],axis=1) 
Out[135]: 
       A     B      C      B           C
0    535                         Mission
1    536                         Mission
2    541                        FairOaks
3   5455                          Valley
4     55                          Sunset
5     55                           Green
6         West                       4th
7         East                Bainbridge
8               Pearl   West            
9                Main  South            
10              First              Allen

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM