我遇到了一个特定的问题,我有一个ID号的数据帧.其中一些账号已删除前导零.

ID
345
345
543
000922
000345
000345
000543

所以我想做的是创建一个通用的方法来判断我们是否删除了前导零.所以基本上,在我的真实数据集中会有数百万行.所以我想用pandas方法来说明ID的某个部分是否与一个部分的零相匹配,从而将其放入另一个数据帧中,以便我可以进一步判断.

我是这样做的:

new_df = df.loc[df['ID'].isin(df['ID'])]

我的理由是,我想过滤该数据集,以确定是否有任何ID在完整的ID中.

现在我有了

ID
345
345
543
000345
000345
000543

我可以用一个.unique()获取每个唯一组合的系列.

ID
345
543
000345
000543

对于小数据集来说,这很好.但对于数以百万计的人来说,我想知道怎样才能更容易地进行这项判断.

我试图找到一种方法来创建一个字典,其中键是3位数字,值是它的完整ID.反之亦然.

注意:它并不总是3位数.例如,可以是4567,其中实际值为004567.

推荐答案

使用:

print (df)
       ID
0     345
1     345
2     540
3    2922
4  002922
5  000344
6  000345
7  000543

#filter ID starting by 0 to Series
d = df.loc[df['ID'].str.startswith('0'), 'ID']
#create index in Series with remove zeros from left side
d.index = d.str.lstrip('0')
print (d)
ID
2922    002922
344     000344
345     000345
543     000543
Name: ID, dtype: object

#dict all possible values
print (d.to_dict())
{'2922': '002922', '344': '000344', '345': '000345', '543': '000543'}

#compare if exist indices in original ID column and create dict
d = d[d.index.isin(df['ID'])].to_dict()
print (d)
{'2922': '002922', '345': '000345', '543': '000543'}

Python相关问答推荐

如何在 Python 中运行 PowerShell cmdlet 以获取已连接 USB 设备的列表?

在 django requests 模块中使用多值参数发出获取请求?

csv 数据以逗号结尾 |Python |

Python tKinter:如何暂停倒数计时器

围绕索引创建掩码数组的 Numpy 最快方法

如何通过从组中减去元素来创建变量?例如,每组的每一行的值 - 组值的第一行

填充数据框中未明确说明的值

python-click MultiCommand 的全局选项

在python中只增亮图像的黑暗区域

识别白色图像上的线条/点,丢弃图案

使用ffmpeg python阅读视频时如何忽略自动旋转?

修改过滤器水平搜索字段django

运行多个 LinearRegressions 测试时精度没有增加

Python集解包和模式匹配

如何在 map 中插入点

二分搜索:没有得到非常大的值的上限和下限

如何将 5 个数字映射到 5 种不同的 colored颜色

re.sub() 通配符

带有Pandas 的ValueError应用函数返回可变形状的输出

Haystack 为预测指定列