小能豆

两个 Pandas 列的字符串连接

python

我有以下追随者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

阅读 43

收藏
2024-08-26

共1个答案

小能豆

要将 barfoo 列中的值组合成一个新的字符串并赋值回 bar 列,您可以使用向量化的字符串操作或 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']])

使用 applylambda 函数:

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']])

解释:

  • 向量化字符串操作:首先将 bar 列转换为字符串类型(使用 astype(str)),然后使用 + 运算符将 barfoo 列中的字符串连接在一起。
  • 使用 apply 方法apply 方法会逐行应用 lambda 函数,将每一行的 barfoo 列值组合成格式化的字符串。

输出:

无论使用哪种方法,输出都将是:

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

这样,bar 列就包含了组合后的字符串 "1 is a""2 is b""3 is c"

2024-08-26