如何使这个程序工作?结果应该是串联的整数:
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)
谢谢和亲切的问候
在与DataFrame
一起应用和axis=1
每个循环生成Series
:
f = lambda x: str(x.A) + str(x.B)
a = d[['A', 'B']].apply(f, axis = 1)
非常相似是可以先将两列转换为 string
s:
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
为什么不使用更简单的东西,比如:
d['A'].apply(str) + d['B'].apply(str)