假设以下数据帧:
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 进行相同的计算?
进行主要编辑以提供更好的非平凡示例(我希望)
请您参考如下方法:
应用 map
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
stack 和 str.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()
