📜  将频率更改为 pandas 中的列 - Python (1)

📅  最后修改于: 2023-12-03 14:53:55.936000             🧑  作者: Mango

将频率更改为 pandas 中的列 - Python

在 Pandas 中,我们可以使用value_counts获取数据列的频率计数。但是,有时候我们需要将列中的频率更改为一个新的数值或者数值列表。这个问题可以通过使用map或者replace方法解决。

使用 map 方法

map方法可以将一个函数映射到 Series 中的每个元素。我们可以通过编写一个 lambda 函数来实现将频率更改为新数值的操作。

import pandas as pd

df = pd.DataFrame({'fruit': ['apple', 'banana', 'orange', 'apple', 'banana', 'apple']})

freq = df['fruit'].value_counts()
mapping = {k: v for k, v in zip(freq.index, range(1, len(freq)+1))}

df['freq'] = df['fruit'].map(lambda x: mapping[x])

以上代码中,我们首先使用value_counts计算了fruit列中的频率,并将其保存为一个 Pandas Series 对象。然后,我们使用zip函数将这个 Series 对象的键和值打包成一个字典。最后,我们使用这个字典和map方法将每个水果转换为对应的频率值。

使用 replace 方法

replace方法能够将 Series 中的某个值替换为另一个值。我们可以通过编写一个字典来实现将频率更改为一个数值列表的操作。

import pandas as pd

df = pd.DataFrame({'fruit': ['apple', 'banana', 'orange', 'apple', 'banana', 'apple']})

freq = df['fruit'].value_counts()
mapping = {k: [v] for k, v in freq.items()}

df['freq'] = df['fruit'].replace(mapping)

以上代码中,我们首先使用value_counts计算了fruit列中的频率,并将其保存为一个 Pandas Series 对象。然后,我们将这个 Series 对象的键和值分别作为字典的键和值。最后,我们使用这个字典和replace方法将每个水果转换为对应的频率值列表。

这两种方法都能实现将频率更改为 Pandas 中的列。对于 Pandas 新手来说,使用map方法可能更加容易理解。而对于经验丰富的 Python 开发者来说,使用replace方法可能更加常用。