首页 > 解决方案 > 如何对熊猫中的多个新列进行相同的计算?

问题描述

假设以下数据框:

df1:

a        b    
'a'      'aaaaa'
'bb'     'bbbb'
'ccc'    'ccc'
'dddd'   'dd'
'eeeee'  'e'

df2:

c       d    
'aaa'   'a'
'bbb'   'bb'
'ccc'   'ccc'
'ddd'   'dddd'
'eee'   'eeeee'

我想对所有列进行相同的计算,从而产生一个新列。

假设计算是lambda x,y: len(x)+len(y)

那么结果 df 将是:

ac     bd    
4      6
5      6
6      6
7      6
8      6

我关心的是避免对所有列/元素进行 for 循环。 如何对所有相关列进行相同的column_list1计算column_list2


进行了重大编辑以提供更好的非平凡示例(我希望)

标签: pythonpandas

解决方案


applymap

c = df1.columns + df2.columns
d1 = df1.set_axis(c, axis=1, inplace=False)
d2 = df2.set_axis(c, axis=1, inplace=False)

d1.applymap(len) + d2.applymap(len)

   ac  bd
0   4   6
1   5   6
2   6   6
3   7   6
4   8   6

stackstr.len

c = df1.columns + df2.columns
d1 = df1.set_axis(c, axis=1, inplace=False)
d2 = df2.set_axis(c, axis=1, inplace=False)

(d1.stack().str.len() + d2.stack().str.len()).unstack()

推荐阅读