pandas将两列字符串拼接到一起组成新的一列

项目场景:

在我的日常工作中需要经常处理时间,例如需要将2022年1月16日8时处理成2022011608,或各种格式,但遇到的文件通常五花八门,其中有一个场景是年月日和时分开,或年月日时本身是分开,这就需要将它们拼接到一起。
如要把date和hour列拼到一起。
要把在这里插入图片描述

问题描述:

我会经常出现错误的做法,就是直接在列表外面加str(),企图把列表里的元素转换成字符串再拼接,这……显然是不行的……这里记录一下:

a = [1,2,3]
b = [1,2,3]
c = str(a) + str(b)
print(c)
输出:'[1,2,3][1,2,3]'

原因分析:

str函数对单个的元素有用,但对列表使用str,是将整个列表转换为字符串,+号对单个元素有拼接的作用,但在这里是将两个列表直接拼接到一起,显然达不到我的预期。


解决方案:

方法一:
其实这里的+号仍然管用,只不过要将列表中的元素变成字符串,推荐用pandas读取数据,如上面的文件:

df['date'] = df['date'].astype('str')
df['hour'] = df['hour'].astype('str')
datetime = df['date'] + df['hour']

方法二:
还是用pandas读取数据,用.str.cat这个方法,但前提仍然是先变成字符串,例:

df['date'] = df['date'].astype('str')
df['hour'] = df['hour'].astype('str')
df['date'].str.cat(df['hour'])

还可以在中间加分隔符或加一列特殊的字符,具体可见:
https://www.jianshu.com/p/c1d99d14603d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值