Python一样的代码,写出来,有些识别的不对呢?

共 2239字,需浏览 5分钟

 ·

2024-07-16 09:00

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

红豆生南国,春来发几枝。

大家好,我是Python进阶者。

一、前言

前几天在Python铂金交流群【逆光】问了一个Python数据处理的问题,问题如下:一样的代码,提取数字,写出来,有些识别的不对呢?

二、实现过程

这里【瑜亮老师】给了个思路如下:你这代码一看就让人头疼

【逆光】:我再看也头疼

【瑜亮老师】:你把数据发上来,我直接给你写吧

【不上班能干啥!】:我看这个原表格挺规整的,代码怎么乱乱的

【瑜亮老师】:太头疼了,代码惨不忍睹

【逆光】:@不上班能干啥! 只是我的乱

【不上班能干啥!】:像这种感觉都不用正则

【逆光】:把费用明细拆成后面对应的几列。@你说的对 大佬我发了,请帮我瞅瞅。

这里【不上班能干啥!】给出的代码如下:

test = pd.read_excel("测试数据.xlsx")

extract_cols = test.columns.drop('费用明细')
for c in extract_cols:
    test[c] = test['费用明细'].str.extract(fr'{c}.*?(\d+\.?\d*)').astype('float64')

test.to_excel("测试数据-结果.xlsx", index=False)

【不上班能干啥!】:测试数据,我看了没啥问题

【逆光】:这么厉害,好快哦

后来【不上班能干啥!】还给出了第二针方法,不用正则的方法,结果跟上面是一样的,代码如下:

test = pd.read_excel("测试数据.xlsx")
extract_cols = test.columns.drop('费用明细')

test['费用明细-c'] = test['费用明细'].str.split(',')
test = test.explode('费用明细-c')

test[['费用明细-c''费用明细-d']] = test['费用明细-c'].str.split(' ', expand=True)
test['费用明细-d'] = test['费用明细-d'].str.strip('元').astype('float64')
test.loc[test['费用明细-c'].str.contains('平台加价'), '费用明细-c'] = '平台加价'

test = test[test['费用明细-d'].notna()]
testc = test.groupby('费用明细', sort=False)[['费用明细-c''费用明细-d']].apply(lambda x: x.set_index('费用明细-c').T).reset_index(level=-1, drop=True)

testc.reindex(columns=extract_cols).reset_index().to_excel("测试数据-结果.xlsx", index=False)

【逆光】:学习了

顺利地解决了粉丝的问题。

如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Python数据处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【逆光】提出的问题,感谢【瑜亮老师】、【不上班能干啥!】给出的思路,感谢【莫生气】、【冯诚】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。


浏览 25
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报