Skip to main content
 首页 » 编程设计

python之在 Pandas 中每行连接列

2025年05月04日15webabcd

在 R 中很简单:

df = data.frame(a = letters[1:5], b = letters[6:10], c = letters[11:15],stringsAsFactors = F) 
df$tot = apply(df,MARGIN = 1,function(x){paste(x,collapse = "")}) 

我在 Python Pandas 中尝试过:

df.apply(lambda row: ''.join(str(row)), axis=1) 

这会导致一个疯狂的结果,还会将列标题添加到字符串中。

我必须从 R 迁移到 Python,我发现它非常违反直觉来做一些简单的事情,比如这个操作。谁能解释一下为什么包含 colnames 的逻辑?

请您参考如下方法:

str(row) 将行转换为字符串,例如:

str([1, 2, 3]) => '[1, 2, 3]' 
str(['a','b']) => '["a", "b"]' 

and ''.join(x) 其中 x 是一个字符串返回相同的字符串。因此,您的 lambda 转换字符串中的一行。

但看起来你想要的是:在加入它们之前将行的每个元素转换为字符串:

lambda row: ''.join(str(x) for x in row)