python - 通过使用字符串格式连接两个其他列来创建一个新列

标签 python pandas dataframe

我有以下代码将两列连接成一个新列:

import pandas as pd

d = {
    'name': ['Tomek', 'Jacek', 'Placek'],
    'surname': ['A', 'B', 'C'],
}

df = pd.DataFrame(d)
df['fullname'] = df['name'] + ' ' + df['surname']
print(df)

# output:
#    name surname  fullname
# 0   Tomek       A   Tomek A
# 1   Jacek       B   Jacek B
# 2  Placek       C  Placek C

但是,我需要改用字符串格式:

import pandas as pd

d = {
    'name': ['Tomek', 'Jacek', 'Placek'],
    'surname': ['A', 'B', 'C'],
}

df = pd.DataFrame(d)
df['fullname'] = f"{df['name']} {df['surname']}"
print(df)

但随后的输出是:

#     name surname                                           fullname
# 0   Tomek       A  0     Tomek\n1     Jacek\n2    Placek\nName: n...
# 1   Jacek       B  0     Tomek\n1     Jacek\n2    Placek\nName: n...
# 2  Placek       C  0     Tomek\n1     Jacek\n2    Placek\nName: n...

我怎样才能使用字符串格式并仍然像第一个那样输出?

最佳答案

I need to use string formatting instead

使用zip() 然后列表理解

df['fill_name']=[f"{a} {b}" for a,b in zip(df.name,df.surname)]
print(df)

     name surname fill_name
0   Tomek       A   Tomek A
1   Jacek       B   Jacek B
2  Placek       C  Placek C

关于python - 通过使用字符串格式连接两个其他列来创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56790882/

相关文章:

python - 在 Python 3.6 中导入库 "modin"时出错

r - 如何将基于时间的不等长数据帧与R中的缓冲间隔合并?

python - 在第二台显示器上更新/刷新 matplotlib 图

python-2.7 - 如何将通过 "pandas.describe"获取的参数一次性放入一个图中?

python - 将两个时间序列与 tz 感知的日期时间索引结合起来

r - 一系列数据开始时的滚动方式和应用方式

python - Pandas to_datetime 不适用于空值

python - makecython++导致 fatal error : Python. h:尽管安装了python3-dev,但没有这样的文件或目录

python 列表到 'n' 字符串数取决于列表的长度

Python命令行: ignore indentation