提问者:小点点

在python中连接数据帧的列(使用字符串值),类似于R[duplicate]中的paste0函数


以下是输入数据

Type   Cat       Var         Dist    Count
@joy   A1 + B1  x + y + z   0:25:75    4
.cet   C1 + D1  p + q       50:50      2
sam    E1 + F1  g           100:3:2    10

以下是预期输出

Type   Cat       Var         Dist    Count   Output
@joy   A1 + B1  x + y + z   0:25:75    4    @joyA1 + B1x + y +z
.cet   C1 + D1  p + q       50:50      2    .cetC1 + D1p + q
sam    E1 + F1  g           100:3:2    10    samE1 + F1g

以下是我最后的尝试:

df.iloc[:,0:3].dot(['Type','Cat','Var'])

共3个答案

匿名用户

你可以用

df['output'] = df['Type'].map(str) + df['Cat'].map(str) + df['Var].map(str)

匿名用户

您可以简单地使用:

df['Output']=df['Type']+' '+df['Cat']+' '+df['Var']

输出:

   Type      Cat        Var         Dist  Count                  output
0  @joy  A1 + B1  x + y + z  0.018229167      4  @joy A1 + B1 x + y + z
1  .cet  C1 + D1      p + q     50:50:00      2      .cet C1 + D1 p + q
2   sam  E1 + F1          g    100:03:02     10           sam E1 + F1 g

匿名用户

基本R:使用粘贴0

df$Output <- paste0(df$Type, df$Cat, df$Var)
  Type     Cat       Var    Dist Count                 Output
1 @joy A1 + B1 x + y + z 0:25:75     4 @joy A1 + B1 x + y + z
2 .cet C1 + D1     p + q   50:50     2     .cet C1 + D1 p + q
3  sam E1 + F1         g 100:3:2    10          sam E1 + F1 g

library(dplyr)
df %>% 
  mutate(Output = paste(Type, Cat, Var, sep = ""))
  Type     Cat       Var    Dist Count                 Output
1 @joy A1 + B1 x + y + z 0:25:75     4 @joy A1 + B1 x + y + z
2 .cet C1 + D1     p + q   50:50     2     .cet C1 + D1 p + q
3  sam E1 + F1         g 100:3:2    10          sam E1 + F1 g

或:

library(tidyr)
df %>% 
  unite(Output, c(Type, Cat, Var), remove=FALSE)
                  Output Type     Cat       Var    Dist Count
1 @joy_A1 + B1_x + y + z @joy A1 + B1 x + y + z 0:25:75     4
2     .cet_C1 + D1_p + q .cet C1 + D1     p + q   50:50     2
3          sam_E1 + F1_g  sam E1 + F1         g 100:3:2    10