一、了解需求
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
Original: https://blog.csdn.net/weixin_44352981/article/details/120675324
Author: 老Amy
Title: 听说你还在不停的粘贴复制?Python用1秒实现excel列合并
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/739457/
转载文章受原作者版权保护。转载请注明原作者出处!