栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

听说你还在不停的粘贴复制?Python用1秒实现excel列合并

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

听说你还在不停的粘贴复制?Python用1秒实现excel列合并

一、了解需求

excel数据如下,而需求就是将 版型、变速箱、环保标准 三列进行合并,并将合并结果添加到新列——备注列中。

而会玩Python的老amy一想,这还不简单?直接使用pandas完成。

二、代码实现
  • 读取 excel 数据
df = pd.read_excel("111.xls")
df

  • 查看数据信息
# 查看大概信息
df.info()

  • 得知每列数据的类型为object类型,则获取每列直接相加即可。
df_2 = df["版型"] + df["变速箱"] + df["环保标准"]
df_2


大家会发现直接这样合并有一个小小的问题,也就是如第3行中 2021款 E-Tense 左岸版 + NaN + NaN 竟然结果为 NaN。oh no!这不是我们想要的结果。

奥改咯?(怎么解决呢)

三、问题来源

我们就得清楚的知道问题的出处。

1.必要条件
  • np.nan为浮点类型
  • np.nan + 任何值 = np.nan

由此就可以理解为什么上面会出现 2021款 E-Tense 左岸版 + NaN + NaN 结果为 NaN了。

当然,肯定会有的朋友认为 object 类型不是文本字符串嘛?为什么结果反而是进行了加法运算呢?

那就得好好聊聊 object 了。

2.object类型到底为何方妖怪?

在 Python 中 str 和 Numpy 中的 String 、Unicode,在 Pandas 中都表示为 object,也就是字符串在 Pandas 中的类型为 object。

这个跟大家的理解基本一致。但是需要注意的是,当一列数据不止一种数据类型组成时(如:同时出现 np.nan 、字符串等),Pandas 就很难自动甄别数据类型,所以就会默认处理为兼容性更强的类型——object。

此时,大家就应该恍然大悟:“原来object不是那么纯粹的文本数据类型呀”。

四、解决

那我们的解决方案就是将np.nan 变为文本数据类型即可。

代码如下:

df["备注"] = df["版型"].map(str) + df["变速箱"].map(str) + df["环保标准"].map(str)
df


当然我们如果想去除文本中的nan,通过以下代码即可实现。

df["备注"] = df["备注"].str.replace("nannan","")
df

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/308646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号