在 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)
