如何根据列的值对熊猫数据框中的列进行分类?

Posted

技术标签:

【中文标题】如何根据列的值对熊猫数据框中的列进行分类?【英文标题】: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())

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

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

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

【问题讨论】:

【参考方案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 字典需要时间。或者带有名称的列可能不称为“名称”。在这种情况下,您将如何找到该列?

以上是关于如何根据列的值对熊猫数据框中的列进行分类?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据合并的数据框之一的两列的值在熊猫数据框中添加值

确定熊猫数据框中的列值何时更改

熊猫数据框中的列的总和

根据熊猫数据框中的列标签对数据进行分组

如何使用熊猫数据框中的列标记气泡图/散点图?

有没有办法根据熊猫中的唯一值对列进行排序?