Python 基于现有列中的变量创建新列

Python 基于现有列中的变量创建新列,python,pandas,dataframe,numpy,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.

我有一个带有可变列的数据框。该列具有不同的变量,一些变量具有通用大小,而另一些变量具有唯一大小。我想基于变量列创建新列

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
循环。我应该考虑哪种方法?有更好的方法吗?

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

size_list = [['A1',20],['A2',20],['B1',10],['B2',10],['C',5],['D',2]]

df['size'] = df['variable'].map(dict(size_list))
print (df)
  variable  size
0       A1    20
1       A2    20
2       B1    10
3       B2    10
4        C     5
5       A1    20
6        D     2
7       A1    20
8       A2    20
9       B1    10

你好过了很长时间。很高兴你能回答我的问题。这一行的回答让你大吃一惊。我很困惑。非常感谢。
dict(尺码表)
maybe@MustafaAyd两人都给了我正确的答案。我完全惊讶的是,
变量
元素与
size_列表中的变量
相等,然后在找到匹配项时赋值。例如,我的方法显然让我满意,而你的解决方案让我大吃一惊。我真的很感激用一两句话来理解答案。特别是
map
dict
@incland我没有写答案,我的评论与所写的内容相当。也许回答者可以解释他们的解决方案是如何工作的。我能说的就是看看
dict
和pandas
map
perhaps@MustafaAydın-
也许回答者可以解释他们的解决方案是如何工作的
?嗯,有什么不清楚的吗?