连接python数据帧中的行

时间:2017-08-23 19:26:36

标签: python pandas

这个问题可能非常基础,但我想在pandas DataFrame中连接三列。
我想将col1,col2和col3连接成col4。我知道在R中可以很容易地使用粘贴功能。

df = pd.DataFrame({'col1': [2012, 2013, 2014], 'col2': 'q', 'col3': range(3)})

编辑:代码清晰 - 我想自动生成col4:

x=pd.DataFrame()
x['col1'] = [2012,2013,2013]
x['col2'] = ['q', 'q', 'q']
x['col3'] = [1,2,3]
x['col4'] = ['2012q1', '2013q2', '2014q4']

3 个答案:

答案 0 :(得分:3)

转换为字符串后,将pd.DataFrame.sumaxis=1一起使用 我使用pd.DataFrame.assign创建一个包含新列的副本

df.assign(col4=df[['col1', 'col2', 'col3']].astype(str).sum(1))

   col1 col2  col3    col4
0  2012    q     1  2012q1
1  2013    q     2  2013q2
2  2014    q     3  2014q3

或者您可以在地方添加列

df['col4'] = df[['col1', 'col2', 'col3']].astype(str).sum(1)
df

   col1 col2  col3    col4
0  2012    q     1  2012q1
1  2013    q     2  2013q2
2  2014    q     3  2014q3

如果df只有三列,则可以将代码缩减为

df.assign(col4=df.astype(str).sum(1))

如果df有三列以上但你要连接的三列是前三列

df.assign(col4=df.iloc[:, :3].astype(str).sum(1))

答案 1 :(得分:0)

df['col4'] = df.col1.astype(str) + df.col2 + df.col3.astype(str)

答案 2 :(得分:0)

要跨所有列连接,编写df.apply(..., axis=1)可能更方便,如:

df['col4'] = df.apply(lambda x: "".join(x.astype(str)),axis=1)
df

#   col1 col2  col3    col4
#0  2012    q     1  2012q1
#1  2013    q     2  2013q2
#2  2014    q     3  2014q3

特别是如果你有很多专栏并且不想全部写出来(按照凯尔的答案要求)。