python - 如何修改一列中的多个值,但在pandas python中跳过其他值
问题描述
在 python 中学习了两个月,我现在正专注于Pandas。在我目前的职位上,我在数据帧上使用 VBA,因此学习它以慢慢取代它并促进我的职业生涯。到目前为止,我相信我真正的问题是缺乏对关键概念的理解。任何帮助将不胜感激。
这就是我的问题:
我可以去哪里了解更多关于如何做这样的事情以获得更精确的过滤。我非常接近,但我需要一个关键方面。
目标
主要目标我需要跳过我的 ID 列中的某些值。 下面的代码去掉了破折号“-”,最多只能读取 9 位数字。但是,我需要跳过某些 ID,因为它们是唯一的。
之后,我将开始比较多张纸。
- 主数据框 ID 的格式为 000-000-000-000
- 我将比较它的其他数据帧没有破折号“-”作为 000000000 和三个减去 000 的总九位数。
我需要跳过的唯一 ID 在两个数据帧中是相同的,但格式完全不同,范围为 000-000-000_#12、000-000-000_35 或 000-000-000_z。
我将在每个 ID 上使用的代码(唯一 ID 除外):
dfSS["ID"] = dfSS["ID"].str.replace("-", "").str[:9]
但我想使用类似的 if 语句(这不起作用)
lst = ["000-000-000_#69B", "000-000-000_a", "etc.. random IDs", ]
if ~dfSS["ID"].isin(lst ).any()
dfSS["ID"] = dfSS["ID"].str.replace("-", "").str[:9]
else:
pass
为了更清楚,我的输入 DataFrame 是这样的:
ID Street # Street Name
0 004-330-002-000 2272 Narnia
1 021-521-410-000_128 2311 Narnia
2 001-243-313-000 2235 Narnia
3 002-730-032-000 2149 Narnia
4 000-000-000_a 1234 Narnia
我希望将其作为输出:
ID Street # Street Name
0 004330002 2272 Narnia
1 021-521-410-000_128 2311 Narnia
2 001243313000 2235 Narnia
3 002730032000 2149 Narnia
4 000-000-000_a 1234 Narnia
笔记:
- dfSS 是我的 Dataframe 变量名,也就是我正在使用的 excel。“ID”是我的列标题。事后将使其成为索引
- 我在这项工作中的数据框很小,(行、列)的数量为(2500、125)
- 我没有收到错误消息,所以我猜也许我需要某种循环。也开始测试循环。那里没有运气......但是。
这是我一直在研究这个的地方:
解决方案
有很多方法可以做到这一点。这里的第一种方法不涉及编写函数。
# Create a placeholder column with all transformed IDs
dfSS["ID_trans"] = dfSS["ID"].str.replace("-", "").str[:9]
dfSS.loc[~dfSS["ID"].isin(lst), "ID"] = dfSS.loc[~dfSS["ID"].isin(lst), "ID_trans"] # conditional indexing
第二种方法是编写一个有条件地转换ID的函数,它没有第一种方法那么快。
def transform_ID(ID_val):
if ID_val not in lst:
return ID_val.replace("-", "")[:9]
dfSS['ID_trans'] = dfSS['ID'].apply(transform_ID)
推荐阅读
- openthread - OpenThread - 数据集 mgmtget 命令激活
- angular - 有没有办法以特定方式嵌套星云卡?
- sql - 在 SQL 表中查找 NULL 值的百分比
- javascript - 赛普拉斯选择没有价值
- php - 如何在 php 中使用数组列表搜索数组?
- orocommerce - 在 OroCommerce 4.1 中清理审计表的最佳方法是什么?
- module - 如何将构造函数放在 Julia 的另一个文件中?
- botframework - Azure 机器人通道未连接到机器人
- python - 多个python列表到json文件
- css - 如何使用 scss @include