我有多个pandas数据框,其中可能有不同数量的列,这些列的数量通常从50到100不等。我需要创建一个最后的列,它只是连接所有列。基本上,列的第一行中的字符串应该是所有列的第一行中字符串的总和(连接)。我在下面写了一个循环,但我觉得可能有更好的更有效的方法来做这件事。有什么办法吗
num_columns = df.columns.shape[0]
col_names = df.columns.values.tolist()
df.loc[:, 'merged'] = ""
for each_col_ind in range(num_columns):
print('Concatenating', col_names[each_col_ind])
df.loc[:, 'merged'] = df.loc[:, 'merged'] + df[col_names[each_col_ind]]
我没有足够的声誉发表评论,所以我正在建立我的答案从黑网站的反应。
为了清楚起见,LunchBox评论说,Python3.7.0失败了。在Python 3.6.3上也失败了。以下是blacksite的原始答案:
以下是我对Python3.6.3的修改:
用^{} 溶解,但输出是
float
,因此转换成int
和str
是必要的:另一个具有
apply
函数join
的解决方案,但它最慢:最后一个非常快的
numpy solution
-转换成numpy array
,然后'sum':计时:
如果某些列的数据类型不是由^{} 强制转换的
object
(显然是string
),请编辑:给我们:
要选择给定的列集,请执行以下操作:
但是,我注意到,这种方法有时会导致
NaN
被填充到不应该填充的地方,所以这里有另一种方法:尽管应该指出,这种方法要慢得多:
对
相关问题 更多 >
编程相关推荐