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

一、了解需求

excel数据如下,而需求就是将 版型、变速箱、环保标准 三列进行合并,并将合并结果添加到新列——备注列中。
听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第1张图片
而会玩Python的老amy一想,这还不简单?直接使用pandas完成。

二、代码实现

  • 读取 excel 数据
df = pd.read_excel("111.xls")
df

听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第2张图片

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

听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第3张图片

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

听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第4张图片
大家会发现直接这样合并有一个小小的问题,也就是如第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类型到底为何方妖怪?

PythonstrNumpy 中的 StringUnicode,在 Pandas 中都表示为 object,也就是字符串在 Pandas 中的类型为 object

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

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

四、解决

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

代码如下:

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

听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第5张图片
当然我们如果想去除文本中的nan,通过以下代码即可实现。

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

听说你还在不停的粘贴复制?Python用1秒实现excel列合并_第6张图片

你可能感兴趣的:(少女的技术文章,python,数据分析)