2024-04-26 23:20:30 发布
网友
这个问题可能很基本,但我想在pandas数据帧中连接三列。 我想连接col1,col2和col3到col4。我知道在R中,这可以很容易地用粘贴函数来完成。在
df = pd.DataFrame({'col1': [2012, 2013, 2014], 'col2': 'q', 'col3': range(3)})
编辑:代码清晰-我想自动生成col4:
df['col4'] = df.col1.astype(str) + df.col2 + df.col3.astype(str)
转换为字符串后,pd.DataFrame.sum与axis=1一起使用。 我使用pd.DataFrame.assign创建一个包含新列的副本
pd.DataFrame.sum
axis=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只有三列,则可以将代码减少到
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.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
尤其是如果你有很多专栏,而且不想把它们都写出来(正如凯尔的回答所要求的那样)。在
转换为字符串后,
pd.DataFrame.sum
与axis=1
一起使用。我使用
pd.DataFrame.assign
创建一个包含新列的副本也可以在适当位置添加列
^{pr2}$如果
df
只有三列,则可以将代码减少到如果
df
有三个以上的列,但要连接的三个列是前三个要跨所有列连接,可以更方便地编写
df.apply(..., axis=1)
,如:尤其是如果你有很多专栏,而且不想把它们都写出来(正如凯尔的回答所要求的那样)。在
相关问题 更多 >
编程相关推荐