如何让这个程序运作?结果应该是连接整数:
import pandas as pd
d = pd.DataFrame({'A': range(5), 'B': range(5, 10)})
f = lambda x, y: str(x) + str(y)
d[['A', 'B']].apply(f, axis = 1)
Thx&亲切的问候
答案 0 :(得分:1)
在应用DataFrame
和axis=1
时,每个循环生成Series
:
f = lambda x: str(x.A) + str(x.B)
a = d[['A', 'B']].apply(f, axis = 1)
非常相似可能首先将两列转换为string
:
f = lambda x: x.A + x.B
a = d[['A', 'B']].astype(str).apply(f, axis = 1)
您可以通过自定义功能检查处理:
def f(x):
print (x)
print (x.A)
print (x.B)
return str(x.A) + str(x.B)
a = d[['A', 'B']].apply(f, axis = 1)
A 0
B 5
Name: 0, dtype: int64
0
5
A 1
B 6
Name: 1, dtype: int64
1
6
A 2
B 7
Name: 2, dtype: int64
2
7
A 3
B 8
Name: 3, dtype: int64
3
8
A 4
B 9
Name: 4, dtype: int64
4
9
但更好/更快加入+
,但首先将数字列转换为string
s:
a = d['A'].astype(str) + d['B'].astype(str)
print (a)
0 05
1 16
2 27
3 38
4 49
dtype: object
答案 1 :(得分:1)
为什么不使用更简单的东西,例如:
d['A'].apply(str) + d['B'].apply(str)