Python 如何根据外部列表的值在数据框中添加新列?

Python 如何根据外部列表的值在数据框中添加新列?,python,dataframe,Python,Dataframe,我有一个数据帧df,有两列:col1和col2 col1包括我的用户的id。用户是一个名称列表(即字符串)。因此,id=0等于我的用户列表中索引0处的名称 我想在我的数据框中添加一个新列,包括ID的相应名称用户列表=['user\u 1','user\u 2','user\u 3'] 将列添加到数据帧: df['UserName'] = user_list 如果id列只有唯一的值(意味着没有多个具有相同id的行),则可以按id列对数据帧进行排序,然后将列表分配给新列 data = {'id':

我有一个数据帧
df
,有两列:
col1
col2

col1包括我的用户的
id
。用户是一个名称列表(即字符串)。因此,id=0等于我的用户列表中索引0处的名称


我想在我的
数据框中添加一个新列,包括
ID的相应名称

用户列表=['user\u 1','user\u 2','user\u 3']
将列添加到数据帧:

df['UserName'] = user_list

如果id列只有唯一的值(意味着没有多个具有相同id的行),则可以按id列对数据帧进行排序,然后将列表分配给新列

data = {'id': [2, 1, 0, 3]}    
df = pandas.DataFrame(data=d)

users = ['dave', 'sandy', 'will', 'arthur']

df.sort_values(by=['id'], inplace=True) 

df['user'] = users
输出:

id    user
 0    dave
 1   sandy
 2    will
 3  arthur
id    user
 3  arthur
 1   sandy
 0    dave
 3  arthur
如果id列具有相同id的多个实例,则可以使用lambda函数:

data = {'id': [3, 1, 0, 3]}    
df = pandas.DataFrame(data=d)

users = ['dave', 'sandy', 'will', 'arthur']

df['user'] = df.apply(lambda row: users[row.id], axis=1)
输出:

id    user
 0    dave
 1   sandy
 2    will
 3  arthur
id    user
 3  arthur
 1   sandy
 0    dave
 3  arthur

lambda基本上是说,对于这个新列“user”中的每一行,值应该来自由行“id”列值给定的索引处的users列表。

user\u列表包含的用户比它在数据帧中存在的多。然后,用户_1不等于id=0。