连接python datafram中的行

2024-04-26 23:20:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题可能很基本,但我想在pandas数据帧中连接三列。
我想连接col1,col2和col3到col4。我知道在R中,这可以很容易地用粘贴函数来完成。在

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

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

^{pr2}$

Tags: 数据函数代码编辑dataframepandasdf粘贴
3条回答
df['col4'] = df.col1.astype(str) + df.col2 + df.col3.astype(str)

转换为字符串后,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

也可以在适当位置添加列

^{pr2}$

如果df只有三列,则可以将代码减少到

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

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

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

要跨所有列连接,可以更方便地编写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

尤其是如果你有很多专栏,而且不想把它们都写出来(正如凯尔的回答所要求的那样)。在

相关问题 更多 >