社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python数据帧中的部分转换列

Berbatov • 5 年前 • 1407 次点击  

我在python数据框中有一个列,如下所示:

Product_ID
ABCD
1234
0001234
2345
4567
EFGH

它当前存储为对象数据类型。但是,我确实希望这些数字合并(即1234与0001234是同一产品)。由于列中也有文本字符串,因此无法将其转换为整数

df['Product_ID'] = pd.to_numeric(df['Product_ID'])

值错误:无法分析位置0处的字符串“abcd”。

我可以使用函数将这些条目转换为不包含文本字符的整数(或者至少去掉前导0)吗?

最后,我希望按此列分组,不希望1234和0001234有单独的条目。

谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43018
 
1407 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Hello.World
Reply   •   1 楼
Hello.World    6 年前

您可以添加 .drop_duplicates 对于@coldspeed这样的答案,要删除重复的事件:

df = pd.DataFrame(data = [['ABCD'], ['1234'], ['0001234'], ['2345'], ['4567'], ['EFGH']], columns=['Product_ID'])
df.Product_ID = df.Product_ID.map(lambda x:x.lstrip('0'))
df.drop_duplicates(subset = ['Product_ID'], keep = 'first')

    Product_ID
0   ABCD
1   1234
3   2345
4   4567
5   EFGH
Horbaje
Reply   •   2 楼
Horbaje    6 年前

您可以执行lstrip来删除不需要的零。

df['ABCD'] = df['ABCD'].map(lambda x: x.lstrip('0'))

之后,您将能够执行groub,而无需转换列的类型。

cs95
Reply   •   3 楼
cs95    6 年前

为什么不将列保留为字符串?如果您希望“1234”和“0001234”被同等对待,则始终可以去掉前导零。

df.Product_ID.astype(str).str.lstrip('0')

0    ABCD
1    1234
2    1234
3    2345
4    4567
5    EFGH
Name: Product_ID, dtype: object