根据现有列中的变量创建一个新列

时间:2021-05-07 13:32:06

标签: python pandas dataframe numpy

我有一个带有可变列的数据框。该列具有不同的变量,一些具有共同的大小,而另一些具有独特的大小。我想根据变量列创建新列

df = 
      variable
0     A1  
1     A2
2     B1
3     B2
4     C
5     A1
6     D 
7     A1  
8     A2
9     B1
#I want to create a new column `size` indicating the size of the variable. 
# A1, A2 = 20
# B1, B2 = 10
# C = 5, D = 2

我的方法1

df['size'] = ""
df.loc[df['variable'].isin([A1,A2])==True,'size']=20
df.loc[df['variable'].isin([B1,B2])==True,'size']=10
df.loc[df['variable'].isin([C])==True,'size']=5
df.loc[df['variable'].isin([D])==True,'size']=2

我的方法2

size_list = [['A1',20],['A2',20],['B1',10],['B2',10],['C',5],['D',2]]
for itm in size_list:
   df.loc[df['variable'].isin([itm[0])==True,'size']=itm[1]

第一种方法是 4 行和矢量化方法。第二种方法只是两行代码,而是一个 for 循环。我应该考虑哪种方法?有没有更好的方法?

1 个答案:

答案 0 :(得分:1)

使用 Series.map 和从列表中创建的字典进行映射:

print(*[] or ['Test'])
相关问题