根据某些条件分配pandas DataFrame单元格的内容,而不使用循环

时间:2016-02-07 16:31:51

标签: python python-2.7 dictionary pandas dataframe

我有一个带有以下内容的pandas DataFrame df:

Serial N       voltage       current
   B              10            nan
   B              10            nan
   C              12            nan
   D              40            nan
   .               .             .
   AB             12            nan

我还有以下字典,其中包含以下当前值(我的密钥在这里是序列号):

my_dict={A:0.6,B:0.2, ...,AB:0.2}

我想根据字典将字典的内容存储到dataFrame列“current”中。我可以在dataFrame df中使用相同的值来拥有多个序列号。如果可能的话,我想在不使用循环的情况下这样做。我试过这个:

for k,v in my_dict.items():
   if df["Serial N"]==k:           
       df["current"]=v

但它不起作用,因为我没有行的位置(我可以有几个具有相同值的序列号;例如:Serial N列中的B)满足条件。如何在没有循环的情况下完成此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用map

print df
  Serial N  voltage  current
0        B       10      NaN
1        B       10      NaN
2        C       12      NaN
3        D       40      NaN
4       AB       12      NaN

my_dict={"A":0.6,"B":0.2,"AB":0.2}
print my_dict
{'A': 0.6, 'B': 0.2, 'AB': 0.2}

df['current'] =  df['Serial N'].map(my_dict)
print df
  Serial N  voltage  current
0        B       10      0.2
1        B       10      0.2
2        C       12      NaN
3        D       40      NaN
4       AB       12      0.2