pandas:结合string和int列

我有一个下面的DataFrame

 from pandas import * df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3]}) 

它看起来像这样:

  bar foo 0 1 a 1 2 b 2 3 c 

现在我想有这样的东西:

  bar 0 1 is a 1 2 is b 2 3 is c 

我怎样才能做到这一点? 我尝试了以下内容:

 df['foo'] = '%s is %s' % (df['bar'], df['foo']) 

但它给了我一个错误的结果:

 >>>print df.ix[0] bar a foo 0 a 1 b 2 c Name: bar is 0 1 1 2 2 Name: 0 

对不起,一个愚蠢的问题,但这一个pandas:结合在DataFrame中的两列对我没有帮助。

df['bar'] = df.bar.map(str) + " is " + df.foo

你的代码中的问题是你想要在每一行上应用这个操作。 你写这个的方式需要整个'bar'和'foo'列,把它们转换成string,并且给你一个大的string。 你可以这样写:

 df.apply(lambda x:'%s is %s' % (x['bar'],x['foo']),axis=1) 

它比其他答案更长,但是更通用(可以使用不是string的值)。

你也可以使用

 df['bar'] = df['bar'].str.cat(df['foo'].values.astype(str), sep=' is ') 
 df.astype(str).apply(lambda x: ' is '.join(x), axis=1) 0 1 is a 1 2 is b 2 3 is c dtype: object