【问题标题】:How to classify columns in pandas dataframe based on column's values?如何根据列的值对熊猫数据框中的列进行分类?
【发布时间】:2021-12-22 06:32:55
【问题描述】:

我正在从事数据匿名化项目,偶然发现了faker,它具有广泛的生成合成数据的功能,例如姓名、姓氏、ssn、信用卡号、日期...

但是,用户必须手动选择将哪个函数应用于哪个列。比如:

import faker

fake = faker.Faker()

df["Name"] = df.name.apply(lambda x: fake.name())
df["City"] = df.name.apply(lambda x: fake.city())

在某些数据集中,列的名称可能与其包含的数据不同。 所以我想知道有没有办法以某种方式自动化这个将特定功能应用于各个列的过程?

或者以某种方式将列的值与函数期望的输入进行比较,如果相似,则应用该函数。

非常感谢任何指点、指导或帮助!

【问题讨论】:

    标签: python pandas faker anonymize


    【解决方案1】:

    这样的事情怎么样?

    import faker
    
    fake = faker.Faker()
    
    mapping = {
        'Name': fake.name,
        'City': fake.city,
    }
    
    for col, func in mapping.items():
        df[col] = df[col].apply(lambda x: func())
    

    【讨论】:

    • 看起来不错,但问题可能不止 2 列,在这种情况下,定义 mapping 字典需要时间。或者带有名称的列可能不称为“名称”。在这种情况下,您将如何找到该列?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2015-05-11
    • 2021-02-27
    • 2022-07-19
    • 2013-07-30
    相关资源
    最近更新 更多