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