我有以下追随者DataFrame:
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
要将 bar 和 foo 列中的值组合成一个新的字符串并赋值回 bar 列,您可以使用向量化的字符串操作或 apply 方法。以下是如何实现这一点的示例:
bar
foo
apply
from pandas import DataFrame df = DataFrame({'foo': ['a', 'b', 'c'], 'bar': [1, 2, 3]}) # 将 'bar' 和 'foo' 列组合成一个格式化的字符串 df['bar'] = df['bar'].astype(str) + ' is ' + df['foo'] print(df[['bar']])
lambda
from pandas import DataFrame df = DataFrame({'foo': ['a', 'b', 'c'], 'bar': [1, 2, 3]}) # 使用 apply 方法将 'bar' 和 'foo' 列组合成一个字符串 df['bar'] = df.apply(lambda x: f"{x['bar']} is {x['foo']}", axis=1) print(df[['bar']])
astype(str)
+
无论使用哪种方法,输出都将是:
这样,bar 列就包含了组合后的字符串 "1 is a"、"2 is b" 和 "3 is c"。
"1 is a"
"2 is b"
"3 is c"