遍历列和映射值
Iterating through a column and mapping values
这就是我想要做的。
我想替换此数据框的值。
例如。 Bernard 被替换为 1,然后 Drake 被替换为 2,依此类推。
如何遍历列以编写可以执行以下操作的函数。
IIUC
data = {
'Name' : ['My Name', 'My Name', 'Your Name', 'Your Name'],
'Date' : ['2022-01-01', '2022-02-01', '2022-01-01', '2022-02-01']
}
df = pd.DataFrame(data)
df['Count'] = df.groupby(['Name']).cumcount() + 1
df
创建字典和地图
dict = {'bernard':1, 'drake':2, 'sansa':3}
df['code'] = df['name'].map(dict)
name date code
0 bernard 01/11/2020 1
1 drake 01/11/2020 2
2 sansa 01/11/2020 3
这是您要找的吗?
您可以使用内置类别代码来实现此目的:
df.Name.astype('category').cat.codes+1
函数已经存在 - pd.factorize
。
它 returns 一个元组 - 首先是一个新列,其中包含每个项目已映射到的值。然后是唯一值的索引。
df = pd.DataFrame({'name': ['Bernard', 'Bernard', 'Drake', 'Drake', 'Lance']})
pd.factorize(df.name)
(array([0, 0, 1, 1, 2]), Index(['Bernard', 'Drake', 'Lance'], dtype='object'))
使用它,我们只需分配一个新列:
df = df.assign(codes=pd.factorize(df.name)[0] + 1)
df
name codes
0 Bernard 1
1 Bernard 1
2 Drake 2
3 Drake 2
4 Lance 3
这就是我想要做的。
我想替换此数据框的值。
例如。 Bernard 被替换为 1,然后 Drake 被替换为 2,依此类推。 如何遍历列以编写可以执行以下操作的函数。
IIUC
data = {
'Name' : ['My Name', 'My Name', 'Your Name', 'Your Name'],
'Date' : ['2022-01-01', '2022-02-01', '2022-01-01', '2022-02-01']
}
df = pd.DataFrame(data)
df['Count'] = df.groupby(['Name']).cumcount() + 1
df
创建字典和地图
dict = {'bernard':1, 'drake':2, 'sansa':3}
df['code'] = df['name'].map(dict)
name date code
0 bernard 01/11/2020 1
1 drake 01/11/2020 2
2 sansa 01/11/2020 3
这是您要找的吗?
您可以使用内置类别代码来实现此目的:
df.Name.astype('category').cat.codes+1
函数已经存在 - pd.factorize
。
它 returns 一个元组 - 首先是一个新列,其中包含每个项目已映射到的值。然后是唯一值的索引。
df = pd.DataFrame({'name': ['Bernard', 'Bernard', 'Drake', 'Drake', 'Lance']})
pd.factorize(df.name)
(array([0, 0, 1, 1, 2]), Index(['Bernard', 'Drake', 'Lance'], dtype='object'))
使用它,我们只需分配一个新列:
df = df.assign(codes=pd.factorize(df.name)[0] + 1)
df
name codes
0 Bernard 1
1 Bernard 1
2 Drake 2
3 Drake 2
4 Lance 3