ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python用符号拼接DataFrame两列

2020-11-26 13:32:13  阅读:454  来源: 互联网

标签:python 08 DataFrame df 日期 拼接 2020 np values


问题描述

如下图的日期dataframe,需要把开始日期和结束日期拼接在一起

原dataframe

开始日期结束日期
2020-08-032020-08-09
2020-08-102020-08-16
2020-08-172020-08-23
2020-08-242020-08-30
2020-08-312020-09-06

拼接后的dataframe

开始日期结束日期插入日期
2020-08-032020-08-092020-08-03 ~ 2020-08-09
2020-08-102020-08-162020-08-10 ~ 2020-08-16
2020-08-172020-08-232020-08-17 ~ 2020-08-23
2020-08-242020-08-302020-08-24 ~ 2020-08-30
2020-08-312020-09-062020-08-31 ~ 2020-09-06

解决方案

方案一:apply映射

# 方案1
date_xl['插入日期']=date_xl.apply(lambda x:x['开始日期']+" ~ "+x['结束日期'],axis=1)

# 方案2
date_xl['插入日期']=date_xl.apply(lambda x:" ~ ".join(x.values),axis=1)

上面两种方法,原理基本一致

碰到Null值时,会报错,因为none不可与str运算
解决如下,加入if判断即可

df = pd.DataFrame([list("ABCDEF"),
             list("ABCDE")]).T
df.columns=list('XY')
df.apply(lambda x:" ~ ".join(x.values) if (x.values[0]!= None) &(x.values[1] != None) else np.nan,axis=1)

方案二:转成嵌套数组/列表

# 转换成嵌套数组
df.values 
np.array(df)

#转换成嵌套列表
df.values.tolist()
np.array(df).tolist()

# 拼接
pd.DataFrame([" ~ ".join(i)  if (i[0]!= None) &(i[1] != None) else np.nan for i in np.array(df).tolist()])

标签:python,08,DataFrame,df,日期,拼接,2020,np,values
来源: https://blog.csdn.net/qq_35866846/article/details/110181951

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有