如何将第一列的值附加到pandas数据帧中的所有其他列

时间:2017-09-05 01:17:39

标签: python pandas dataframe

我一直在尝试搜索如何获取第一列的值并将其附加到数据框中的其余列,但我看到的那些列仍然需要为新输出创建一个新列。

我根据需要找到的最接近的是此代码。

df['col'] = 'str' + df['col'].astype(str)

以下是我的数据框样本

      col1        col2    col3    col4
1  02-04-2017      ND     0.32     0.8
2  02-05-2017      0.3     ND     No Connection

我想知道的是,我该如何获得此输出?

      col1         col2               c ol3                col4
1  02-04-2017   ND|02-04-2017     0.32|02-04-2017      0.8|02-04-2017 
2  02-05-2017   0.3|02-05-2017    ND|02-05-2017        No Connection|02-05-2017

2 个答案:

答案 0 :(得分:3)

您可以使用df.ilocstr.cat轻松完成此操作:

df.iloc[:, 1:] = df.iloc[:, 1:].apply(lambda x: x.str.cat(df['col1'], sep='|'))   
df

         col1            col2             col3                      col4
1  02-04-2017   ND|02-04-2017  0.32|02-04-2017            0.8|02-04-2017
2  02-05-2017  0.3|02-05-2017    ND|02-05-2017  No Connection|02-05-2017

你也可以使用df.transform(v0.20以后)。

df.iloc[:, 1:] = df.iloc[:, 1:].transform(lambda x: x.str.cat(df['col1'], sep='|'))   
df

         col1            col2             col3                      col4
1  02-04-2017   ND|02-04-2017  0.32|02-04-2017            0.8|02-04-2017
2  02-05-2017  0.3|02-05-2017    ND|02-05-2017  No Connection|02-05-2017

答案 1 :(得分:3)

assignaddradd

的乐趣
df.assign(**df.iloc[:, 1:].astype(str).add(df.col1.radd('|'), 0))

         col1            col2             col3                      col4
1  02-04-2017   ND|02-04-2017  0.32|02-04-2017            0.8|02-04-2017
2  02-05-2017  0.3|02-05-2017    ND|02-05-2017  No Connection|02-05-2017