📅  最后修改于: 2023-12-03 14:53:55.936000             🧑  作者: Mango
在 Pandas 中,我们可以使用value_counts
获取数据列的频率计数。但是,有时候我们需要将列中的频率更改为一个新的数值或者数值列表。这个问题可以通过使用map
或者replace
方法解决。
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
方法能够将 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
方法可能更加常用。