python中dataframe某列按照指定批量索引修改其单元格内容

1 需求

       我有一份关于地理位置的数据,但是地理位置信息是用户填写的,所以五花八门都有,如下
location.xlsx
在这里插入图片描述
我需要根据另外一份一二三四五线城市数据,如下
city.xlsx
在这里插入图片描述
我想location.xslx的location列字符串中包含city.xlsx中city列数据字眼就在location.xslx中打上新的一列作为标签(城市维度)

2 举例搬代码

print(city['城市'][0])
index = location[location['location'].str.contains(city['城市'][0])].index.to_list()
print(index[:5])
location['city'][index].replace('几线城市','一线城市')
location['city'].value_counts()

在这里插入图片描述
1 这时我还想既然不能批量替换,查看replace是否有参数可以设置---->没有找到
2 想到对单个使用的apply与lambda方法,试试

location.iloc[index]['city'].apply(lambda x:'一线城市') 

也不行,后来我觉得既然不能批量这样,那么我就是遍历弄就可以了,于是写了个循环,虽然时间久,但是解决了需求

for i in tqdm(range(len(city))):
    index = location[location['location'].str.contains(city['城市'][i])].index.to_list()

    for j in range(len(index)):
        location['city'][index[j]] = city['几线城市'][i]

花费时间
在这里插入图片描述

百万行数据,检索300多个城市,勉强还能接受

3 突破进展

是我觉悟不够高,今早睡醒突然想到,直接替换后覆盖就可以了,速度提高了10几倍,nice!
赶论文了~,还是来记录一下下

4 感想

多点往dataframe里面内置的一些批量操作函数,因为底层了解到很多事拿C实现,速度会快很多,不然有时候取数处理速度太慢,真的无语了,有兴趣可以看看我之前写的
在这里插入图片描述

python中DataFame一些性能优化的小小技巧

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据闲逛人

谢谢大嘎喔~ 开心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值