python - 如何将列中的值更改为假值
问题描述
我想将数据框中的一列的值更改为假数据。
这是原始的表格示例:
df = {'Name':['David', 'David', 'David', 'Kevin', 'Kevin', 'Ann', 'Joan']
'Age':[10,10,10,12,12,15,13]}
df = pd.DataFrame(df)
df
现在我想要做的是将 Name 列值更改为这样的假值:
df = {'Name':[A, A, A, B, B, C, D]
'Age':[10,10,10,12,12,15,13]}
df = pd.DataFrame(df)
df
请注意我如何将名称更改为不同的字母组合。这是示例数据,但在实际数据中,有很多名称,所以我从 A、B、C、D 开始,然后当它到达 Z 时,下一个新名称应该是 AA,然后是 AB,等等。
这可行吗?
解决方案
这是我的建议。下面的 List 'fake' 有超过 23000 个项目,如果你的 df 有更多的唯一值,只需增加循环的结尾(当前为 5),fake 列表将成倍增加:
import string
from itertools import combinations_with_replacement
names=df['Name'].unique()
letters=list(string.ascii_uppercase)
fake=[]
for i in range(1,5): #increase 5 if you need more items
fake.extend([i for i in combinations_with_replacement(letters,i)])
fake=[''.join(i) for i in fake]
d=dict(zip(names, fake))
df['code']=df.Name.map(d)
假货样本:
>>> print(fake[:30])
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD']
输出:
>>>print(df)
Name Age code
0 David 10 A
1 David 10 A
2 David 10 A
3 Kevin 12 B
4 Kevin 12 B
5 Ann 15 C
6 Joan 13 D
推荐阅读
- python - 将 ffprobe 与 Django 一起使用时出错 - Python2
- ios - MFMailComposeViewController 返回和发送按钮不起作用
- node.js - 如何在微服务/事件驱动架构中处理 HTTP 请求?
- javascript - 如何在续集中使用 UNION ..?或者像 UNION 这样的任何其他方法都期望 promise.All...?
- c++ - 如何将输入输入到元素数量未知的数组?
- spring-integration - SQS 的 Spring-Integration 分区
- android - Firebase Crashlytics 不支持 NDK?
- python-3.x - 解析 SIP 数据包 .cap 文件以到达“INFO”字段
- angularjs - 轻量级 PWA 框架
- asp.net-core - 当我安装最新的 .NET Core SDK (2.1.301) 应用程序不会在 azure 应用程序服务中运行