首页 > 解决方案 > 新列取自先前列的数字加上数字之间的特殊字符

问题描述

我有一个带有数字的数据框,我想在同一个数据框中创建一个新列,其中第一列的值加上“:”加上第二列的值。

data = {'First Column Name':  ['1', '2'],
        'Second Column Name': ['555', '666'] 
        
        }

df = pd.DataFrame (data, columns = ['First Column Name','Second Column Name'])

print (df)

  First Column Name Second Column Name
0                 1                555
1                 2                666


我需要的欲望栏应该是这样的

Desire column
0         1:555
1         2:666

第一列的值可以是数字或字符 X 或 Y。第二列的值只能是从 de 1 到 9999999999 的数字

标签: pythonpandas

解决方案


使用str.cat

df['Desire column'] = df['First Column Name'].str.cat(df['Second Column Name'], sep=':')
print(df)

输出

  First Column Name Second Column Name Desire column
0                 1                555         1:555
1                 2                666         2:666

作为备选:

df['Desire column'] = df['First Column Name'] + ':'  + df['Second Column Name']

如果列是数字类型,请先使用astype转换它们:

df['Desire column'] = df['First Column Name'].astype(str) + ':' + df['Second Column Name'].astype(str)

这同样适用于cat。请注意,如果您使用的是 pandas 1.0+,推荐的方法是:

df['Desire column'] = df['First Column Name'].astype('string') + ':' + df['Second Column Name'].astype('string')

这意味着dtype将是StringDtype。要了解为什么建议这样做并学习一些使用文本的技巧,请阅读用户指南


推荐阅读