简单适用于concat pandas-columns

时间:2018-01-04 15:43:35

标签: python-3.x pandas apply

如何让这个程序运作?结果应该是连接整数:

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&亲切的问候

2 个答案:

答案 0 :(得分:1)

在应用DataFrameaxis=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)